满意答案
woaiman789
2014.02.18
采纳率:45% 等级:12
已帮助:7482人
#include
#include
void main(){
int **a,i,j,x,y,n;
printf("input the N:");
scanf("%d",&n);
a = (int**) malloc(sizeof(int*)*n);
for(i=0; i
a[i]=(int*)malloc(sizeof(int)*n);
for(i=0;i
a[i][j]=0;
for(i=1,j=1,x=0,y=n-1; i<=n*n; i++) {
a[x][y]=i;
switch (j) /*j 为前进方向,0向右,1向下,2向左,3向上。*/
{
case 0:
if(y+1>n-1|| a[x][y+1]!=0) {j=1;x++;}
else y++;
break;
case 1:
if(x+1>n-1 || a[x+1][y]!=0){j=2;y--;}
else x++;
break;
case 2:
if(y-1<0 || a[x][y-1]!=0){j=3; x--;}
else y--;
break;
case 3:
if(x==0||a[x-1][y]!=0){j=0; y++;}
else x--;
break;
}
}
for(i=0;i
for(j=0;j
printf("%4d",a[i][j]);
printf("\n");
free(a[i]);
}
free(a);
system("pause");
}
00分享举报