2008信息工程学院集训队——选拔赛
题目大意:从左上角开始,顺时针蛇形递增输出1、2、3、…、N。
思路:四重while循环,存储数字并判断是否出界。
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; int a[12][12]; int main() { int N; while(cin >> N && N) { memset(a,0,sizeof(a)); int tot = 1; int x = 1,y = 1; while(x == 1 && y <= N) a[x][y++] = tot++; x++,y--; while(x <= N && y == N) a[x++][y] = tot++; x--,y--; while(x == N && y >= 1) a[x][y--] = tot++; x--,y++; while(y == 1 && x >= 2) a[x--][y] = tot++; for(int i = 1; i <= N; ++i) { for(int j = 1; j <= N; ++j) { if(a[i][j] == 0) cout << " "; else printf("%3d",a[i][j]); } cout << endl; } } return 0; }