1 条题解
-
0
#include <bits/stdc++.h> using namespace std; void sparalMat(int *array[],int n) { int time = 0; int start = 1; //左上角起始点,做个补充,这个是每一个外壳,第一个起始点。 while (time < n) { if (n-1-time==0) { array[time / 2][time / 2] = start; } for (int i = 0; i < n-1-time; ++i) { array[(time / 2)][time/2+i] = start + i; array[time / 2 + i][n - 1 - time / 2] = start + (n - time - 1) + i; array[n-1 - time / 2][n-1 - time / 2 - i] = start + 2 * (n - 1 - time) + i; array[n - 1 - time / 2 - i][time / 2] = start + 3 * (n - 1 - time) + i; } start += 4 * (n - 1 - time); time += 2; } } //主函数入口 int main() { int ha = 0; cin >> ha; int **a = new int*[ha]; for (int i = 0; i < ha; i++) //这一块仅仅是动态内存分配,与算法无关 { a[i] = new int[ha]; } sparalMat(a, ha); for (int i = 0; i < ha; i++) { for (int j = 0; j < ha; j++) { cout << setw(3) << a[i][j]; } cout << endl; } for (int i = 0; i < ha; i++) //内存释放,我觉得有必要释放,即使是在程序结束时。 { delete [] a[i]; } delete[] a; return 0; }
- 1
信息
- ID
- 208
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 3
- 标签
- 递交数
- 56
- 已通过
- 30
- 上传者