洛谷P 5731【深基5.習6】蛇形方陣(C++版)
9803 ワード
原題転送ドア:
https://www.luogu.com.cn/problem/P5731
タイトルの説明
9以下の正の整数nを与え、nを出力する.×nの蛇形方陣.
左上隅に1を記入してから、サンプルのように時計回りに順番に数字を記入します.注意各数字には3文字が使用され、前にスペースを使用して整列します.
入力形式なし
出力フォーマットなし
入出力サンプル
しゅつりょく
コード(この書き方は煩雑です):
いかなる形式の転載を歓迎しますが、必ず出典を明記してください.
本人のレベルに限り、文章やコードに不適切な点があれば、教えてください.
https://www.luogu.com.cn/problem/P5731
タイトルの説明
9以下の正の整数nを与え、nを出力する.×nの蛇形方陣.
左上隅に1を記入してから、サンプルのように時計回りに順番に数字を記入します.注意各数字には3文字が使用され、前にスペースを使用して整列します.
入力形式なし
出力フォーマットなし
入出力サンプル
4
しゅつりょく
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
コード(この書き方は煩雑です):
#include
#include
using namespace std;
int a[9][9] = {
0 };
int main() {
int n;
cin >> n;
int count = 0;//
int i = 0, j = 0;
count++;
a[i][j] = count;
int m = n;// 、
while (count < n * n)
{
//
j++;
while (j < m)
{
count++;
a[i][j++] = count;
}
j--;
//
i++;
while (i < m)
{
count++;
a[i++][j] = count;
}
i--;
//
j--;
while (j > n - m - 1)
{
count++;
a[i][j--] = count;
}
j++;
//
i--;
while (i > n - m)
{
count++;
a[i--][j] = count;
}
i++;
m--;
}
for (int k = 0; k < n; k++)
{
for (int l = 0; l < n; l++)
{
/*printf("%3d", a[k][l]);*/
if (a[k][l] < 10)
{
cout << " " << a[k][l];
}
else
{
cout << " " << a[k][l];
}
}
cout << endl;
}
return 0;
}
いかなる形式の転載を歓迎しますが、必ず出典を明記してください.
本人のレベルに限り、文章やコードに不適切な点があれば、教えてください.