5 条题解
-
0
#include<stdio.h> int main() { int n; int a[100][100]={0}; scanf("%d",&n); if(n==1) { printf("1"); return 0; } if(n%2!=0)//奇数比偶数多一个最中间的值 { a[n/2][n/2]=n*n; } int j=0; for(int i=0;i<n/2;i++)//控制次数 一层就是一次循环 {//注意:每层小循环的区间 左闭右开 for(int k=0;k<n-1-2*i;k++)//上到下 { a[i+k][n-1-i]=++j; } for(int k=0;k<n-1-2*i;k++)//右到左 { a[n-1-i][n-1-k-i]=++j; } for(int k=0;k<n-1-2*i;k++)//下到上 { a[n-1-k-i][i]=++j; } for(int k=0;k<n-1-2*i;k++)//左到右 { a[i][i+k]=++j; } } for(int i=0;i<n;i++) { for(int k=0;k<n;k++) { printf("%d ",a[i][k]); } printf("\n"); } return 0; }
信息
- ID
- 131
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 638
- 已通过
- 211
- 上传者