思路:
水题。
实现:
1 #include <iostream> 2 #include <cstdio> 3 #include <set> 4 using namespace std; 5 6 int a[5][5]; 7 int dx[4] = { 0, 1, 0, -1 }; 8 int dy[4] = { 1, 0, -1, 0 }; 9 bool vis[1000000]; 10 int now[6]; 11 void dfs(int x, int y, int d) 12 { 13 if (d == 6) 14 { 15 int tmp = 0; 16 for (int i = 0; i < 6; i++) 17 { 18 tmp += now[i]; 19 if (i != 5) 20 tmp *= 10; 21 } 22 vis[tmp] = true; 23 return; 24 } 25 for (int i = 0; i < 4; i++) 26 { 27 int nx = x + dx[i]; 28 int ny = y + dy[i]; 29 if (nx >= 0 && nx < 5 && ny >= 0 && ny < 5) 30 { 31 now[d] = a[nx][ny]; 32 dfs(nx, ny, d + 1); 33 } 34 } 35 } 36 int main() 37 { 38 for (int i = 0; i < 5; i++) 39 { 40 for (int j = 0; j < 5; j++) 41 { 42 cin >> a[i][j]; 43 } 44 } 45 for (int i = 0; i < 5; i++) 46 { 47 for (int j = 0; j < 5; j++) 48 { 49 dfs(i, j, 0); 50 } 51 } 52 int cnt = 0; 53 for (int i = 0; i <= 999999; i++) 54 { 55 if (vis[i]) 56 cnt++; 57 } 58 cout << cnt << endl; 59 return 0; 60 }