C語言 經典題目螺旋矩陣
//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; }
思路是這樣的,剛開始很容易想到順時針賦值,如下圖為5階:分為四個方向順時針賦值。每個方向負責相同數量的元素。
但這樣,后來發現當N為基數時,最中心一個數不能被賦值。
所以改為還是順時針賦值,只是->方向多負責一個元素,右| 方向少負責一個元素
最后的運行結果如下圖:
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答