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;
}