C語(yǔ)言 經(jīng)典題目螺旋矩陣
//N階螺旋矩陣 #include <stdio.h> #include <stdlib.h> int main() { int N,i,j,n,num=1; int a[10][10]={0}; printf("輸入你要輸出的幾階中斷:"); scanf("%d",&N); for(n=0;n<=N/2;n++) { for(j=n;j<=N-n-1;j++) a[n][j]=num++; for(i=n+1;i<N-n-1;i++) a[i][N-n-1]=num++; for(j=N-n-1;j>n;j--) a[N-n-1][j]=num++; for(i=N-n-1;i>n;i--) a[i][n]=num++; } //輸出螺旋矩陣 for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%2d ",a[i][j]); printf("/n"); } system("pause"); return 0; }
思路是這樣的,剛開(kāi)始很容易想到順時(shí)針賦值,如下圖為5階:分為四個(gè)方向順時(shí)針賦值。每個(gè)方向負(fù)責(zé)相同數(shù)量的元素。
但這樣,后來(lái)發(fā)現(xiàn)當(dāng)N為基數(shù)時(shí),最中心一個(gè)數(shù)不能被賦值。
所以改為還是順時(shí)針賦值,只是->方向多負(fù)責(zé)一個(gè)元素,右| 方向少負(fù)責(zé)一個(gè)元素
最后的運(yùn)行結(jié)果如下圖:
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選