劍指offer 順時針列印矩陣

2021-08-28 05:59:16 字數 1370 閱讀 9459

則依次打出數字 1、2、3、4、12、13、14、5、11、16、15、6、10、9、8、7。

自己的解法:

if( n % 2 == 1 ) array[line_index][row_index] = ++s; // 特殊處理奇數最後乙個值, 即 (line_index + 1 == num) 時

// 列印陣列

for( line_index = 0; line_index < n; line_index++ )

}劍指offer啟發(矩陣並不是方陣):所以應當使用貪心法以面對特殊情況

特殊情況:

// 矩形元素值初始化

int array[columns][rows], index_x, index_y;

for( index_x = 0; index_x < columns; index_x++ )

for( index_y = 0; index_y < rows; index_y++ )

array[index_x][index_y] = 0;

int number = 0;

int start = 0; // 一圏的首位置下標,行列相同

// 賦值都遵循貪心法

while( columns > 2 * start && rows > 2 * start )

if( start + 1 < end_x && start + 1 < end_y ) // 從右到左賦值矩形下邊的一行

if( start + 1 < end_x && start + 1 < end_y ) // 從下到上賦值矩形左邊的一行

start++;

}// 列印矩形

for( index_x = 0; index_x < columns; index_x++ )

}

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