轉圈列印矩陣以及之字列印矩陣

2021-10-01 11:07:55 字數 2352 閱讀 5894

這兩道題目的目的就是訓練我們應該由巨集觀排程的概念,切不可注重於區域性的變化。

相同點

a) 這些題沒告訴你怎麼做好,告訴你不能怎麼做。不能想下標怎麼變化!!!。

b) 先要確定好巨集觀排程,然後其他的都是簡單函式

題目

給定乙個整型矩陣matrix,請按照轉圈的方式列印它。例如:

1   2    3    4

5   6    7    8

9   10  11  12

13 14  15  16

列印結果為:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11, 10

要求:額外空間複雜度為o(1)

思路

這個題我們的實現思路是確定矩陣的左上角以及右下角,然後我們列印由這兩個點確定的邊界,完成後,讓左上角的點向右下角移動,讓右下角的點向左上角移動,直到左上角的行大於右下角點的行,或者左上角的點的列大於右下角的點的列結束迴圈。

#include

using

namespace std;

void

printedge

(int

(*matrix)[4

],int row1,

int col1,

int row2,

int col2)

}else

if(col1 == col2)

}else

// 不止一行,不止一列。

while

(curr != row2)

while

(curc != col1)

while

(curr != row1)}}

void

spiralorderprint

(int matrix[

4],int rows,

int cols)

}int

main

(int argc,

char

** ar**),,

,};spiralorderprint

(matrix,4,

4);system

("pause");

return exit_success;

}

題目

「之」字形列印矩陣:給定乙個矩陣matrix,按照「之」字形的方式列印這個矩陣,例如:

1   2    3    4

5   6    7    8

9   10  11  12

「之」字形列印的結果為:1,2,5,9,6,3,4,7,10,11,8,12

要求:額外空間複雜度為o(1)

思路

1) 選擇乙個點表示(row1, col1)以及另乙個點(row2, col2),讓其最初都是0,即都指向左上角的元素。

2) 列印這兩個點確定的對角線,直到row1等於矩陣的行數-1,其中(row1,col1)的移動規律是先向左移動,移動到頭之後就向下移動,(row2, col2)的移動規律是先向下移動,移動到頭之後就向左移動。

#include

#include

using

namespace std;

void

printlevel

(const vectorint>>

&matrix,

int row1,

int col1,

int row2,

int col2,

bool direction)

}else

} cout << matrix[row1]

[col1]

<<

", ";}

void

printmatrixzigzag

(const vectorint>>

&matrix,

int rows,

int cols)

printlevel

(matrix, row1, col1, row2, col2, direction)

; cout << endl;

}int

main

(int argc,

char

** ar**),,

};printmatrixzigzag

(matrix,3,

4);system

("pause");

return exit_success;

}

轉圈列印矩陣

題目 給定乙個整型矩陣matrix,請按照轉圈的方式列印它。例如 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 列印結果為 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 要求 額外空間複雜度為o 1 難度 1星 coding utf 8...

轉圈列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序一次列印出每乙個數字。例如 輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 輸出結果 1,2 3 4 8 12 16 15 14 13 9 5 6 7 11 10這個題的解法很簡單,就是矩陣分圈處理,每次都要列印最外...

轉圈列印矩陣

題目 給定乙個整形矩陣matrix,請按照轉圈的方式列印它。例如 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 列印結果為 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 要求 額外空間複雜度為o 1 分析 如果把思路限制在區域性座標怎麼...