#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int arry[20][20] = { 0 };
int i = 1, j = 1, k = 1;//k表示显示的每个数字
while (k <= n * n) {
while (j <= n && arry[i][j] == 0) {//向右移动 纵坐标小于等于n 且那个数字当前没被赋值
arry[i][j] = k;//赋值成K
k++; j++;//数字+1 纵坐标+1
}
i++; j--;//向下移动前 横坐标+1 前面跳出while循环时 j=n+1 所以要-1
while (i <= n && arry[i][j] == 0) {//向下移动 横坐标小于等于n 且那个数字当前没被赋值
arry[i][j] = k;
k++; i++;//数字+1 横坐标+1
}
j--; i--;//向左移动前 纵坐标-1 前面跳出while循环时 i=n+1 所以要-1
while (j>=1 && arry[i][j] == 0) {//向左移动 纵坐标大于等于1 且那个数字当前没被赋值
arry[i][j] = k;
k++; j--;//数字+1 纵坐标-1
}
j++; i--;//向上移动前 横坐标-1 前面跳出while循环时 j=0 所以要+1
while (i>= 1 && arry[i][j] == 0) {//向上移动 横坐标大于等于1 且那个数字当前没被赋值
arry[i][j] = k;
k++; i--;//数字+1 横坐标-1
}
i++; j++;//向右移动前 纵坐标+1 前面跳出while循环时 i=0 所以要+1
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout <<setw(3)<< arry[i][j];//setw(3) 输出数字宽度为3
}
cout << endl;
}
system("pause");
return 0;
}
P5731 【深基5.习6】蛇形方阵
最新推荐文章于 2024-07-01 09:36:38 发布