想起來一道做過兩次的競賽題,明明之後重寫了標程第二次還是想不起來怎麼寫了,愣是連續兩次打表過(捂臉
題目: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...
二維陣列順時針螺旋遞增
之前去美團面試,被問到如題目的演算法問題,因為之前沒有解決過類似的問題,所以當時沒有答出來,今天在網上搜了一下,都是通過多次迴圈來實現的,覺得演算法效率低,自己琢磨用遞迴實現乙個,實現的思路是用遞迴,不斷變化二維陣列的行 列下標來實現螺旋,遞增就很簡單,有乙個值一直 然後給二維陣列相應位置複製就可以...