今日の感情: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;
}