一、題目
要求:輸入乙個陣列,從外到裡順時針列印陣列中的元素,例如輸入矩陣
[[1,2,3,4][5,6,7,8][9,10,11,12]]
輸出 1,2,3,4,8,12,11,10,9,5,6,7
二、思路
按圈列印,記錄每圈的起始位置(行號、列號),特殊行或列需要判斷防止出現空指標異常。
三、**
public
class matrix
list = new arraylist();
// 記錄一圈(環)的開始位置的行
int x = 0;
// 記錄一圈(環)的開始位置的列
int y = 0;
// 對每一圈(環)進行處理,
// 行號最大是(numbers.length-1)/2
// 列號最大是(numbers[0].length-1)/2
while (x * 2
< matrix.length && y * 2
< matrix[0].length)
return list;
}public
void
printmatrixincircle(int numbers, int x, int y)
// 環的高度至少為2才會輸出右邊的一列
// rows-x-1:表示的是環最下的那一行的行號
if (rows - x - 1 > x)
}// 環的高度至少是2並且環的寬度至少是2才會輸出下面那一行
// cols-1-y:表示的是環最右那一列的列號
if (rows - x - 1 > x && cols - 1 - y > y)
}// 環的寬度至少是2並且環的高度至少是3才會輸出最左邊那一列
// rows-x-1:表示的是環最下的那一行的行號
if (cols - 1 - y > y && rows - 1 - x > x + 1) }}
}
順時針列印二維陣列
如果看不懂,可參照劍指offer128頁 include include using namespace std 方法一 傳vector 需要傳引用 方法二 傳二維指標 按圈給陣列賦值 void printmatrixincircle int vector numbers,int rows,int ...
順時針螺旋列印二維陣列
想起來一道做過兩次的競賽題,明明之後重寫了標程第二次還是想不起來怎麼寫了,愣是連續兩次打表過 捂臉 題目 1,2,3 n n 的數字按照順時針螺旋的形式列印成矩陣,如下 輸入數字2,則程式輸出 1 24 3 輸入數字3,則程式輸出 1 2 3 8 9 4 7 6 5 輸入數字4,則程式輸出 1 2 ...
C語言 順時針列印矩陣(二維陣列)
給出二維陣列,要求按順時針列印二維陣列。例如給出 輸入 int arr 3 輸出 1,2,3,6,9,8,7,4,5 順時針列印矩陣的順序是 從左向右 從上向下 從右向左 從下向上 迴圈。1 求出用於返回列表的大小returnsize。2 矩陣 左 右 上 下 四個邊界 l r t b 用於列印的結...