#include<stdio.h>
int main()
{
int n,N,m=-1,c=1,i,j;
scanf("%d",&N);
n=N-1;
int snake[N][N];
i=0;
j=n;
snake[i][j]=1;
c++;
j++;
if(N>1){
while(1){
for(i++,j--;i<=n;i++,c++){
snake[i][j]=c;//n控制右边,从上往下
}
if(N%2==1&&m==n-1)break;
n-=1;
m+=1;
for(i--,j--;j>=m;j--,c++){
snake[i][j]=c;//m控制下边,从右往左
}
for(j++,i--;i>=m;i--,c++){
snake[i][j]=c;//m控制左边,从下往上
}
for(i++,j++;j<=n;j++,c++){
snake[i][j]=c;//n控制上边,从左往右
}
if(N%2==0&&m==n)break;
}
}
for(i=0;i<N;i++){
for(j=0;j<N;j++)printf("%3d ",snake[i][j]);
printf("\n");
}
return 0;
}
蛇形填数-nyoj
最新推荐文章于 2018-12-17 18:30:52 发布