本文共 1021 字,大约阅读时间需要 3 分钟。
#includeusing namespace std;const int maxn = 200; int x, y, n, number = 1; int a[maxn][maxn]; //矩阵 void print_a(){ int line = n; for(int i = 1; i <= n; i ++) { for(int j = 1; j <= n; j ++) cout << a[i][j] << " "; cout << endl; }}void print_sum() //求对角线之和{ int sum = 0; for(int i = 1; i <= n; i ++) sum += a[i][i] + a[i][n - i + 1]; cout << sum - 1; }void fill(int circle) //填充第circle圈{ int steps = 2*circle - 2; for(int i = 0; i < steps; i ++) //上 a[x--][y] = ++ number; x++; for(int i = 0; i < steps; i ++) //左 a[x][--y] = ++ number; for(int i = 0; i < steps; i ++) //下 a[++x][y] = ++ number; for(int i = 0; i < steps; i ++) //右 a[x][++y] = ++number; y++; //y多增1,正好是下一圈要填充的点的坐标 }int main(){ int circle = 2; //从第二圈开始填充 cin >> n; x = (n + 1)/2, y = x + 1; a[x][x] = number; //中心 while(circle*2-1 <= n) { fill(circle); circle ++; } print_a(); print_sum(); }
转载地址:http://hkuin.baihongyu.com/