Acwing matriz cuadrada C++

La emoción de hoy: la idea general de Y es realmente ingeniosa, ¡y lo sabrás tan pronto como la escuches!

El tema proviene del curso de fundamentos de gramática de Acwing


 753. Ingrese un número entero N y genere una matriz 2D de orden N en forma de glifo.

El nivel más externo de la matriz es 1, el siguiente nivel externo es 22 y así sucesivamente.

formato de entrada

La entrada consta de varias líneas, cada una de las cuales contiene un número entero N.

Cuando la línea de entrada N = 0, significa que la entrada ha terminado y no es necesario procesar la línea.

formato de salida

Para cada entero de entrada N, genere una matriz 2D de orden N que satisfaga el requisito.

Cada matriz ocupa N líneas y cada línea contiene N enteros separados por espacios.

Después de generar cada matriz, se genera una línea en blanco.

rango de datos

0≤N≤100

muestra de entrada

 Análisis del tema:

Cada círculo es una capa de forma, así que hagamos que la capa más externa tenga una forma (entendida como un límite, pero no marcada) , tomemos cualquier punto de la forma como una línea vertical en las direcciones arriba, abajo, izquierda y derecha, y cumplir con los límites en cuatro puntos. El valor mínimo de estas cuatro líneas verticales es el número que debe completarse en la fila i y la columna j.

El gran avance radica en construir una línea vertical basada en las características de la forma del bucle, y es fácil saber qué número agregar a este punto a través del tamaño de la línea vertical.

código de CA

#include <iostream>

using namespace std;

int main()
{
	int n;
	while (cin>>n,n)
	{
		for (int i=0;i<n;i++)
		{
			for (int j = 0;j<n;j++)
			{
				int left=j+1,right=n-j,up=i+1,down=n-i;
				cout<<min(min(left,right),min(up,down))<<" ";
			}
			cout<<endl;
		}
	}
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/m0_62277756/article/details/124106339
Recomendado
Clasificación