順時針列印二維陣列

2021-08-15 21:07:55 字數 1065 閱讀 9982

一、題目

要求:輸入乙個陣列,從外到裡順時針列印陣列中的元素,例如輸入矩陣

[[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 用於列印的結...