求解n階螺旋矩陣問題(C )

2021-09-22 18:49:24 字數 1872 閱讀 1474

【問題描述】 建立n階螺旋矩陣並輸出。

輸入描述:輸入包含多個測試用例,每個測試用例為一行,包含乙個正整數n(1≤n≤50),以輸入0表示結束。

輸出描述:每個測試用例輸出n行,每行包括n個整數,整數之間用乙個空格分隔。

輸入樣例:

輸出樣例:

【思路】:

如下圖所示,當 len>2 時,矩陣內層的輸出格式就和(len-2)一樣,只是 num0 做了對應改變。

所以我們可以用遞迴的思想來處理上述問題。

【tips】

需要注意的是,雖然輸出格式和(len-2)一樣,但輸出時的下標並未改變。

【演算法流程圖】

;//定義乙個二維陣列來裝數字後直接列印

int n;

//引數n

/*思路:通過分析可知「建立n階螺旋矩陣並輸出」當n>2以後可以用遞迴分為兩部分來實現,乙個是外層的實現,乙個是內層的遞迴

引數: 1,n

2,num0 用來確定輸出的數字

3,len 用來表示當前呼叫的是哪個遞迴

4, m 用來確定輸出座標

*/void

helixmatrix

(int n,

int num0,

int len,

int m)

if(len ==2)

int x = m;

//座標最小值

int y = n +

1- m;

//座標最大值(第一層的時候是n,第二層是n-1,第三層是n-2.......

int tmp = num0;

//不要隨便改變傳入引數的值

if(len >=3)

//右邊

for(

int i = x +

1; i <= y; i++

)//下面

for(

int i = y -

1; i >= x; i--

)//左邊

for(

int i = y -

1; i >= x +

1; i--

)helixmatrix

(n, tmp, len-

2, m+1)

;}}int

main()

//呼叫函式

helixmatrix

(n,1

, n,1)

;//列印

for(

int i =

1; i <= n; i++

) cout << endl;

}printf

("\n");

}system

("pause");

return0;

}

c 實現n階螺旋矩陣的建立

輸入乙個數n,產生n階螺旋矩陣 問題描述 如下,利用的c 語言實現。include include using namespace std intmain col row for row row col for col count col col num for row count row size...

基礎題目 n階蛇形螺旋矩陣的簡單思路 逆時針旋轉

1.今天發現了乙個螺旋矩陣的簡單思路,清晰易懂。2.之下為 均為逆時針旋轉,四個方向 include include include include include include include typedef unsigned long long ll const int inf 1e9 con...

螺旋矩陣 C

問題 給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12...