劍指offer刷題 順時針列印矩陣

2021-10-03 22:46:17 字數 996 閱讀 3300

題目:輸入乙個矩陣,按照從外向裡以順時針的順序列印出沒乙個數字。例如輸入下面矩陣:

則依次列印出:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

可以將矩陣看作幾個環來列印:

如下:

每次都從環的左上角開始列印,我們會發現左上角元素的橫座標和縱座標是相同的,我們記為(start,start),記矩陣的橫縱座標分別為r和c。我們不難發下下面公式:

r,c>start*start。

另外我們將每一環的列印分為四步:

第一步:從左到右列印環的第一行。

第二步:從上到下列印環的最後一列,這步的條件為矩陣最少有兩行。

第三步:從左到右列印環的最後一列,這步的條件為矩陣最少有兩行兩列。

第四步:從下到上列印環的第一列,這步的條件為矩陣最少有三行兩列。

根據這些條件我們就可以實現**了。

void printmatrixclockwisely(int(*arry)[3], int rows, int columns)

}

void printmatrixcircle(int(* arry)[3], int rows, int cloumns, int start)

//第二步:從上到下列印最後一列

if (endx > start) }

//第三步:從右到左列印最後一行

if (endy > start && endx > start) }

//第四步:從上到下列印第一列

if (endx > start + 1 && endy > start) }

}

劍指offer 順時針列印矩陣

題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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。分析 第一次看到這個題目的時候,覺得...

劍指offer 順時針列印矩陣

題目描述 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字,例如,如果輸入如下矩陣 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.思路 遞迴列印,處理好邊界就ok...

劍指offer 順時針列印矩陣

題目描述 給定乙個矩陣按照順時針順序從外到內的列印這個矩陣 解題思路 設定乙個全域性的方向向量dir其中的順序是向右,向下,向左,向上 每次給行加上乙個方向向量,當出現越界或者已經列印過的時候重新選擇方向 vectorprintmatrix vector matrix int d 0 int row...