对于给定的连通图,起点和终点,如果使用使用深搜的方法解题,如何判断一共有多少可能的路径。
以下面的问题为例:
给定一个n*m的矩阵,其左上角坐标为(0,0)右下角坐标为(n-1,m-1),假设从左上角开始,每次可以向右走一格或者向下走一格,要走到右下角,请问一共有多少种可能的路径?
#include <iostream>
#include <algorithm>
using namespace std;
bool maxt[100][100] = { false };
int end1, end2;
int path = 0;
void dfs(int i,int j) {
maxt[i][j] = true;
if (i == end1 && j == end2) {
path++; return;//请问找到路径后正确的处理操作是什么?
}
if (!maxt[i + 1][j] && i + 1 <=end1) { dfs(i + 1, j); }
if (!maxt[i][j + 1] && j + 1 <=end2) { dfs(i, j + 1); }
}
int main() {
int n, m; cin >> n >> m;
end1 = n - 1; end2 = m - 1;
dfs(0, 0);
cout << path << endl;
return 0;
}
求正确的dfs代码应该怎么写?