0 引言
題目:輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字,例如,如果輸入如下4 x 4矩陣:121 抽象問題具體化3456
78910
1112
1314
1516
,則依次列印出數字
1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
列印順序為:
1)最外圈,一直到最裡圈,一圈一圈地列印;
2)最外圈的列印順序為:左上角到右上角,右上角到右下角,右下角到左下角,左下角到左上角
舉例1:
,輸出舉例2:
,},輸出
舉例3:
,輸出舉例4:
,,,,},輸出
2 具體問題抽象分析
(1)外迴圈:
圈子在往裡邊縮,需要直到圈子的四個邊界值,分別是:
最外圈為第0圈:行座標範圍是(0,n-1),列座標範圍是(0,m-1)
裡邊的圈子為:已知當前為第p圈,行座標(p,n-1-p),列座標範圍是(p,m-1-p)
(2)內迴圈:
圈子從(p,p)點開始,一直列印到(m-1-p,n-1-p)
分四行列印,如圖所示。
1)第一行一定要列印
2)第二行列印條件:行數大於2
3)第三行列印條件:行數大於1
4)第四行列印條件:行數大於2而且列數大於1
(3)考慮特殊情況:
當矩陣行數等於0時,直接返回空向量即可
3 demo
vector printmatrix(vectorint> >matrix)4 **優化//從右下到左下,第三行列印的條件是行數大於1
if(n-2*p >1
)
//從左下到左上,第四行列印的條件是行數大於2而且列數大於1
if(n-2*p >2 && m-2*p >1
)
}return
mymatrix;
}
順時針列印矩陣
輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 45 6 7 89 10 11 1213 14 15 16則依次列印出數字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。這個題目 寫的並不好感覺,好多if看著就煩,就是...
順時針列印矩陣
題目 給定乙個矩陣,從外向內順時針列印矩陣中的每乙個數字。例如 給定矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 輸出應該為 分析 這道題的意思非常直觀,給人的感覺也是so easy,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...
順時針列印矩陣
from 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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。網上聽說聽到包括autod...