问题描述
从一个 5 x 5 的方格矩阵的左上角出发,沿着方格的边走,满足以下条件的路线有多少种?
- 总长度不超过 12;
- 最后回到左上角;
- 路线不自交;
- 不走出 5 x 5 的方格矩阵范围之外。
如下图所示,ABC 是三种合法的路线。注意 B 和 C 由于方向不同,所以视为不同的路线。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:206
题解
DFS:
重合路径
:
(1, 1)
→(1, 2)
→(1, 1)
(1, 1)
→(2, 1)
→(1, 1)
#include <iostream>
using namespace std;
int ans, step;
bool st[10][10];
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
void dfs(int x, int y, int step)
{
if(step > 12) return;
if(x == 1 && y == 1 && st[x][y] && step > 2)
{
ans ++;
return;
}
for (int i = 0; i < 4; i ++)
{
int a = x + dx[i], b = y + dy[i];
if(a < 1 || a > 6 || b < 1 || b > 6 || st[a][b]) continue;
st[a][b] = true;
dfs(a, b, step + 1);
st[a][b] = false;
}
}
int main()
{
dfs(1, 1, 0);
cout << ans << endl;
return 0;
}