1 条题解
-
1
#include<bits/stdc++.h> using namespace std; int dir[4][2] = {{1,0},{0,-1},{-1,0},{0,1}};//方向数组 int main() { int a[25][25] = {}, k = 1, n, fx, fy, d = 0, x, y;//fx, fy当前焦点位置 x,y下一个位置 d:方向 cin >> n; fx = 1, fy = n; while(k <= n*n) { a[fx][fy] = k++; // 赋值 x = fx + dir[d][0], y = fy + dir[d][1]; //下一个位置 if(a[x][y] != 0 || x > n || x < 1 || y > n || y < 1)//如果新位置上已经有值了或移出了二维数组范围 d = (d + 1) % 4;//变换方向 fx += dir[d][0], fy += dir[d][1];//更新焦点位置 } for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) cout << a[i][j] << ' '; cout << endl; } return 0; }
- 1
信息
- ID
- 215
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 10
- 标签
- 递交数
- 6
- 已通过
- 3
- 上传者