满意答案
郭540
推荐于 2017.12.16
采纳率:54% 等级:12
已帮助:7272人
我在ACM上写了一个N*N阶螺旋阵的题,
代码给你了,可能有点长。
输入5即有结果。
#include
int main()
{
int n,k,a[30][30]={0},x=0,y=0,w[5]={1,1,1,1,1};
scanf("%d",&n);
k=2;
a[0][0]=1;
while(k<=n*n){
if(w[1]&&(x>0&&a[x-1][y]==0)) {
a[x-1][y]=k;
k++;
x--;
if(x>0&&a[x-1][y]==0)
w[1]=1,w[2]=0,w[3]=0,w[4]=0;
else w[1]=0,w[2]=1,w[3]=1,w[4]=1;
}
else if(w[2]&&(y
a[x][y+1]=k;
k++;
y++;
if(y
w[1]=0,w[2]=1,w[3]=0,w[4]=0;
else w[1]=1,w[2]=0,w[3]=1,w[4]=1;
}
else if(w[3]&&(x
a[x+1][y]=k;
k++;
x++;
if(x
w[1]=0,w[2]=0,w[3]=1,w[4]=0;
else w[1]=1,w[2]=1,w[3]=0,w[4]=1;
}
else if(w[4]&&(y>0&&a[x][y-1]==0)){
a[x][y-1]=k;
k++;
y--;
if(y>0&&a[x][y-1]==0)
w[1]=0,w[2]=0,w[3]=0,w[4]=1;
else w[1]=1,w[2]=1,w[3]=1,w[4]=0;
}
}
for(k=0;k
int t=1;
for(x=0;x
if(t){
if(n<=3) printf("%-d",a[k][x]);
else if(n<=9) printf("%-2d",a[k][x]);
else printf("%-3d",a[k][x]);
t=0;
}
else {
if(x==n-1) printf(" %-d",a[k][x]);
else {
if(n<=3) printf(" %-d",a[k][x]);
else if(n<=9) printf(" %-2d",a[k][x]);
else printf(" %-3d",a[k][x]);
}
}
}
printf("\n");
}
return 0;
}
00分享举报