2016 騰訊筆試題 輸出回型矩陣(dfs)
阿新 • • 發佈:2019-02-19
n=1的回型矩陣
1 2 3
8 9 4
7 6 5
n=1的回型矩陣
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
n=1的回型矩陣
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
n=1的回型矩陣
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11
#include <iostream> #include <cstdio> using namespace std; int sum; void dfs(int** a,int x,int y,int n,int cnt){ a[x][y] = ++cnt; if(cnt >= sum){ return; } for(int i = 0; i < n-1; ++i){ y++; a[x][y] = ++cnt; } for(int i = 0; i < n-1; ++i){ x++; a[x][y] = ++cnt; } for(int i = 0; i < n-1; ++i){ y--; a[x][y] = ++cnt; } for(int i = 0; i < n-2; ++i){ x--; a[x][y] = ++cnt; } if(cnt >= sum) return; y++; dfs(a,x,y,n-2,cnt); } int main(){ int n; while(~scanf("%d",&n)){ int **a = new int *[n]; for(int i = 0;i < n; ++i) a[i] = new int[n]; int cnt = 0; sum = n*n; dfs(a,0,0,n,cnt); for(int i = 0; i < n; ++i){ for(int j = 0; j < n; ++j){ printf("%d ",a[i][j]); } printf("\n"); } } return 0; }