参考了http://blog.csdn.net/y1196645376/article/details/69718192,这个大哥的思路很巧妙。

思路:

dfs。

实现:

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 const int N = 6;
 6 const int dx[4] = { 0, 1, -1, 0 };
 7 const int dy[4] = { 1, 0, 0, -1 };
 8 
 9 bool vis[6][6];
10 
11 int dfs(int x, int y)
12 {
13     if (x == 0 || x == N || y == 0 || y == N)
14     {
15         return 1;
16     }
17     int cnt = 0;
18     for (int i = 0; i < 4; i++)
19     {
20         int nx = x + dx[i];
21         int ny = y + dy[i];
22         if (nx >= 0 && nx <= N && ny >= 0 && ny <= N && !vis[nx][ny])
23         {
24             vis[nx][ny] = true;
25             vis[N - nx][N - ny] = true;
26             cnt += dfs(nx, ny);
27             vis[nx][ny] = false;
28             vis[N - nx][N - ny] = false;
29         }
30     }
31     return cnt;
32 }
33 
34 int main()
35 {
36     vis[3][3] = true;
37     cout << dfs(3, 3) / 4 << endl;
38     return 0;
39 }

 

相关文章:

  • 2022-02-11
  • 2022-01-12
  • 2021-12-01
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
  • 2022-01-02
  • 2022-12-23
猜你喜欢
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2021-11-05
  • 2022-01-16
  • 2021-09-21
  • 2021-06-27
相关资源
相似解决方案