文章
34
粉丝
0
获赞
6
访问
1.1k
关键:
1.根据题目要求进行模拟,d用于控制填充方向
2.注意输出格式
#include<bits/stdc++.h>
using namespace std;
int main(){
int n; cin >> n;
int a[20][20] = {0};
int i = -1, j = 0;
char d = 'd';
for(int cnt = 1; cnt <= n*n; cnt++){
if(d == 'd'){
a[++i][j] = cnt; // 向下down
if(i == n-1 || a[i+1][j] != 0) d = 'r';
}
else if(d == 'r'){
a[i][++j] = cnt; // 向右right
if(j == n-1 || a[i][j+1] != 0) d = 'u';
}
else if(d == 'u'){
a[--i][j] = cnt; // 向上up
if(i == 0 || a[i-1][j] != 0) d = 'l';
}
else {
a[i][--j] = cnt; // 向左left
if(j == 0 || a[i][j-1] != 0) d = 'd';
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++) printf("%-4d",a[i][j]);;
cout << "\n";
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发