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