當前位置:編程學習大全網 - 源碼下載 - 用C語言設計算法輸出壹個5*5階的螺旋方陣

用C語言設計算法輸出壹個5*5階的螺旋方陣

我在ACM上寫了壹個N*N階螺旋陣的題,

代碼給妳了,可能有點長。

輸入5即有結果。

#include <stdio.h>

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<n-1&&a[x][y+1]==0)){

a[x][y+1]=k;

k++;

y++;

if(y<n-1&&a[x][y+1]==0)

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<n-1&&a[x+1][y]==0)){

a[x+1][y]=k;

k++;

x++;

if(x<n-1&&a[x+1][y]==0)

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<n;k++){

int t=1;

for(x=0;x<n;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;

}

  • 上一篇:cs的歷史
  • 下一篇:2010年第壹期《讀者》上第壹篇文章
  • copyright 2024編程學習大全網