正方行列C++の取得

今日の感情:Yの一般的な考え方は本当に独創的であり、それを聞くとすぐにわかります!

トピックはAcwingGrammarFundamentalsコースから来ています


 753.整数Nを入力し、N次の2D配列をグリフの形で出力します。

配列の最も外側のレベルは1で、次の外側のレベルは22、というように続きます。

入力フォーマット

入力は複数の行で構成され、各行には整数Nが含まれます。

入力ラインN=0の場合、入力が終了し、ラインを処理する必要がないことを意味します。

出力フォーマット

入力整数Nごとに、要件を満たす次数Nの2D配列を出力します。

各配列はN行を占め、各行にはスペースで区切られたN個の整数が含まれます。

各配列が出力された後、空白行が出力されます。

データ範囲

0≤N≤100

入力サンプル

 トピック分析:

各円は形の層なので、最外層に形を持たせ(境界として理解されますが、マークは付けられません)、形の任意の点を上下左右の垂直線として取り、 4つのポイントで境界を満たします。これらの4つの垂直線の最小値は、行iと列jに入力する必要のある数です。

ブレークスルーは、ループ形状の特性に基づいて垂直線を作成することにあり、垂直線のサイズから、このポイントに追加する数を簡単に知ることができます。

ACコード

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

おすすめ

転載: blog.csdn.net/m0_62277756/article/details/124106339