順時針螺旋列印二維陣列

2021-10-06 04:16:34 字數 514 閱讀 5508

想起來一道做過兩次的競賽題,明明之後重寫了標程第二次還是想不起來怎麼寫了,愣是連續兩次打表過(捂臉

題目:1,2,3…n*n 的數字按照順時針螺旋的形式列印成矩陣,如下:

輸入數字2,則程式輸出:

1 24 3

輸入數字3,則程式輸出:

1 2 3

8 9 4

7 6 5

輸入數字4, 則程式輸出:

1     2    3    4

12  13  14  5

11  16  15  6

10   9    8   7

思路:用遞迴的方式從外向內順時針列印每一圈,模擬順時針轉動時x和y的座標位置即可

**:

#includeusing namespace std;

int a[105][105];

void fun(int n,int num,int x,int y)

cout<} return 0;

}

順時針列印二維陣列

如果看不懂,可參照劍指offer128頁 include include using namespace std 方法一 傳vector 需要傳引用 方法二 傳二維指標 按圈給陣列賦值 void printmatrixincircle int vector numbers,int rows,int ...

順時針列印二維陣列

一 題目 要求 輸入乙個陣列,從外到裡順時針列印陣列中的元素,例如輸入矩陣 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 c...

二維陣列順時針螺旋遞增

之前去美團面試,被問到如題目的演算法問題,因為之前沒有解決過類似的問題,所以當時沒有答出來,今天在網上搜了一下,都是通過多次迴圈來實現的,覺得演算法效率低,自己琢磨用遞迴實現乙個,實現的思路是用遞迴,不斷變化二維陣列的行 列下標來實現螺旋,遞增就很簡單,有乙個值一直 然後給二維陣列相應位置複製就可以...