AcWing
3502. 不同路径数
DFS
. 类似于天梯赛_L3-004 肿瘤诊断(三维BFS)。使用了字符串哈希unordered_set
存储出现过的路径,最后输出哈希表存储的元素个数。
#include <bits/stdc++.h>
using namespace std;
int n, m, k;
const int N = 10;
unordered_set<string> str;
int mat[N][N];
int x[4] = {1, 0, -1, 0};
int y[4] = {0, 1, 0, -1};
void dfs(int i, int j, int dep, string s){
s += (char)(mat[i][j] + '0');
if(dep >= k){
str.insert(s);
return;
}
for(int p = 0; p <= 3; p++){
if(i + y[p] <= n && i + y[p] >= 1 && j + x[p] <= m && j + x[p] >= 1)
dfs(i + y[p], j + x[p], dep + 1, s);
}
}
int main(){
cin >> n >> m >> k;
for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) cin >> mat[i][j];
for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) dfs(i, j, 0, "");
cout << (int)str.size() << endl;
return 0;
}