7 順時針列印矩陣

2022-04-27 11:03:08 字數 1137 閱讀 5800

0 引言

題目:輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字,例如,如果輸入如下4 x 4矩陣:12

3456

78910

1112

1314

1516

,則依次列印出數字

1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

1 抽象問題具體化

列印順序為:

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) 

//從右下到左下,第三行列印的條件是行數大於1

if(n-2*p >1

)

//從左下到左上,第四行列印的條件是行數大於2而且列數大於1

if(n-2*p >2 && m-2*p >1

)

}return

mymatrix;

}

4 **優化

順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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...