順時針列印矩陣

2021-06-08 21:22:22 字數 2386 閱讀 6150

題目:給定乙個矩陣,從外向內順時針列印矩陣中的每乙個數字。

例如:給定矩陣:

1    2    3    4

5    6    7    8

9    10   11  12

13   14   15  16

輸出應該為:

分析:這道題的意思非常直觀,給人的感覺也是so easy,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種邊界條件的判定,題目不難,但是給人的感覺——很煩!我分享一下,我做這道題的思路。

迴圈條件怎麼判定?乙個矩陣,給定起點(startx,starty)和終點(endx,endy)(即位於對角線上的兩個點)就可以列印一周,然後向裡進一周(即++startx,++starty,--endx,--endy)即可,如果起始點座標《終止點座標(即startx給定起點和終點,列印一周的結束條件是什麼?我畫了三種情況的矩陣4×4矩陣,3×5矩陣,5×3矩陣(所有矩陣無非就這三種型別,正方形的,偏「胖」的,偏「瘦」的),很快發現,只有三種情況:一直迴圈到結束,只剩下一行,只剩下一列。所以我們的函式首先判定:只有一行?列印該行;只有一列,列印該列。都不是,列印四條邊上的數字。

好了到這裡為止:我們可以寫出完整的**了,如下:

1 #include2 #include

3using

namespace std;45

void printmatrixcircle(int **num,int sx,int sy,int ex,int ey);67

//給定矩陣,給定行列,由外向內順時針列印數字

8void printmatrixclockwisely(int **matrix,int rows,int columns)

9 33 }

3435

//對於給定矩陣,給定對角線上兩點,列印這一周的元素

36void printmatrixcircle(int **num,int sx,int sy,int ex,int ey)

37 45

46return;

47 }

48//

只有一列的情況,直接列印,返回。

49if(sy == ey)

50

55return;

56 }

5758

//一般的情況列印四行

59for(int p = sy;p < ey;++p)

60

6364

for(int q = sx;q < ex;++q)

65

6869

for(int m = ey;m > sy;--m)

70

7374

for(int n = ex;n > sx;--n)

75

7879 }

8081

int main()

82 ;

85int **point = point1;

86int cnt=1;

8788

//初始化

89for(int i = 0;i < 6;i++)

90

96 }

9798 cout<

the original matrix is:

"<99

for(i = 0;i < 6;i++)

100

105 cout<106 }

107108 cout<

the clockwisely output of the matrix is:

"<109

110 printmatrixclockwisely(point,6,6);

111 cout<112

113return

0;114 }

執行結果如下:

這是正方形矩陣,我也測試了偏」胖「型矩陣和偏」瘦型矩陣「,要測試的話,大家需要對main函式的矩陣和指標做適當修改;

我的測試用例和測試結果如下:

偏」胖「型矩陣測試:

偏」瘦「型矩陣測試:

何海濤部落格:

注:1)本部落格所有的**環境編譯均為win7+vc6。所有**均經過博主上機除錯。

2)博主

python27

順時針列印矩陣

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

順時針列印矩陣

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...

順時針列印矩陣

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