順時針列印矩陣

2021-07-12 01:51:49 字數 1177 閱讀 7435

題目:輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字,例如:如果輸入的矩陣如下圖所示:則順時針列印的序列為:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。

解析:我們可以一圈一圈的列印矩陣,要一圈一圈的列印矩陣,必須獲得圈的邊界:圈的起始行和終止行,以及圈的起始列和終止列。列印的結束條件是:(1)起始行和終止行相同。(2)起始列和終止列相同。(3)起始行和終止行相差一。(4)起始列和終止列相差一。如下圖所示:只畫出條件一和條件三的情況,同理可以得到條件二和條件四。

我們設定四個變數(1)firstrow列印某一圈的起始行。(2)lastrow列印某一圈的終止行。(3)firstcol列印某一圈的起始列。(4)lastcol列印某一圈的終止列。我們先列印第一行:matrix[firstrow][i],再列印最後一列:matrix[i][lastcol],然後列印最後一行:matrix[lastrow][i],最後列印第一列:matrix[i][first][col]。**如下:vectorprintmatrix(vector> matrix) 

break;

} //終止條件二

if (firstcol == lastcol)

break;

} //列印第一行

for (int i = firstrow; i < lastcol; ++i)

//列印最後一列

for (int i = firstrow; i < lastrow; ++i)

//列印最後一行

for (int i = lastcol; i > firstcol; --i)

//列印第一列

for (int i = lastrow; i > firstrow; --i)

//終止條件三和終止條件四

if ((lastcol - firstcol == 1) || (lastrow - firstrow) == 1)

break;

} return res;

}

順時針列印矩陣

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