Matrice carrée d'Acwing C++

L'émotion du jour : L'idée générale de Y est vraiment ingénieuse, et vous le saurez dès que vous l'entendrez !

Le sujet provient du cours Acwing Grammar Fundamentals


 753. Entrez un entier N et sortez un tableau 2D d'ordre N sous la forme d'un glyphe.

Le niveau le plus externe du tableau est 1, le niveau externe suivant est 22, et ainsi de suite.

format d'entrée

L'entrée se compose de plusieurs lignes, chaque ligne contenant un entier N.

Lorsque la ligne d'entrée N = 0, cela signifie que l'entrée est terminée et que la ligne n'a pas besoin d'être traitée.

format de sortie

Pour chaque entier d'entrée N, génère un tableau 2D d'ordre N qui satisfait à l'exigence.

Chaque tableau occupe N lignes, et chaque ligne contient N entiers séparés par des espaces.

Après la sortie de chaque tableau, une ligne vide est sortie.

plage de données

0≤N≤100

échantillon d'entrée

 Analyse du sujet :

Chaque cercle est une couche de forme, alors faisons en sorte que la couche la plus externe ait une forme (comprise comme une limite, mais non marquée) , prenons n'importe quel point de la forme comme une ligne verticale dans les directions haut, bas, gauche et droite, et rencontrer les limites en quatre points, La valeur minimale de ces quatre lignes verticales est le nombre qui doit être rempli dans la ligne i et la colonne j.

La percée réside dans la construction d'une ligne verticale basée sur les caractéristiques de la forme de la boucle, et il est facile de savoir quel nombre ajouter à ce point grâce à la taille de la ligne verticale.

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

Je suppose que tu aimes

Origine blog.csdn.net/m0_62277756/article/details/124106339
conseillé
Classement