轉圈列印矩陣
【題目】給定乙個整型矩陣matrix,請按照轉圈的方式列印它。如下圖所示;要求:額外的空間複雜度為0(1)
做矩陣列印的題目不能陷入小的範圍裡面,比如,不能像從哪個點開始,然後下個點是什麼;要建立巨集觀的思維方式;如下解釋
我們要找到左上和右下兩個位置,如下圖紅色框所示,找到這兩個點,我們就可以列印外圍的數;然後在找到下圖黃色的座標,列印內層,。。。。按照這個思路一直下去。
注意迴圈結束的條件:順時針列印就是按圈數迴圈列印,一圈包含兩行或者兩列,在列印的時候會出現某一圈中只包含一行,
要判斷從左向右列印和從右向左列印的時候是否會出現重複列印,同樣只包含一列時,要判斷從上向下列印和從下向上列印的時候是否會出現重複列印的情況
用左上和右下的座標定位出一次要旋轉列印的資料,一次旋轉列印結束後,往對角分別前進和後退乙個單位。
提交**時,主要的問題出在沒有控制好後兩個for迴圈,需要加入條件判斷,防止出現單行或者單列的情況。
#include #include using namespace std;
vectorprintmatrix(vector> matrix)
//從右到左
if (endy > start&&endx > start)
//從下到上
if (endy > start + 1 && endx > start)
start++;
} return res;}
int main()
, , , };
vectorres = printmatrix(matrix);
for (auto num : res)
cout << num << " ";
cout << endl;
system("pause");
return 0;
}
我們需要找到紅色框,黃色框,綠色框的位置,交換,然後再向裡面去
個人[1][1] 旋轉矩陣**:
[2] 個人主頁:
迴圈列印矩陣(演算法)
列印結果為 1,5,6,8,3,8,3,7,6,1,6,6,2,7,2,8。列印最外圍方法如下 定義乙個動點p curr,curc 初始時curr row1,curc col1,curc遞增 終止條件為curc col2 curr遞增 終止條件為curr row2 curc遞減 終止條件為curc ...
旋轉列印矩陣 旋轉儲存矩陣 之字形列印矩陣
題目 輸入乙個矩陣,按照從外向裡以順時針順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 有三問 1 如何實現轉圈列印矩陣?2 如何實現順時針旋轉矩陣?3 如何實現 之 字形列印矩陣?題外話 由於要列印輸出矩陣,從題目可以...
轉圈列印矩陣以及之字列印矩陣
這兩道題目的目的就是訓練我們應該由巨集觀排程的概念,切不可注重於區域性的變化。相同點 a 這些題沒告訴你怎麼做好,告訴你不能怎麼做。不能想下標怎麼變化!b 先要確定好巨集觀排程,然後其他的都是簡單函式 題目 給定乙個整型矩陣matrix,請按照轉圈的方式列印它。例如 1 2 3 4 5 6 7 8 ...