输入n
输出n*n矩阵,从右上角走蛇形排满1-n*n
例子:
输入
4
输出
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
源代码(C实现)
#include<stdio.h>
#include<string.h>
#define maxn 9
int main(){
int a[maxn][maxn]={0};
int r,c,n=0;
scanf("%d",&n);
r=0;c=n-1; //起始点在a[0][n-1]
for(int i=1;i<=n*n;){
while(a[r][c]==0&&r<n&&c<n&&r>=0&&c>=0) a[r++][c]=i++; //往下走
r--;c--;
while(a[r][c]==0&&r<n&&c<n&&r>=0&&c>=0) a[r][c--]=i++; //往左走
c++;r--;
while(a[r][c]==0&&r<n&&c<n&&r>=0&&c>=0) a[r--][c]=i++; //往上走
r++;c++;
while(a[r][c]==0&&r<n&&c<n&&r>=0&&c>=0) a[r][c++]=i++; //往右走
c--;r++;
}
for(int j=0;j<n;j++){ //把数组打印出来
for(int k=0;k<n;k++){
printf("%d ",a[j][k]);
}
printf("\n");
}
return 0;
}