写一个unordered_map的写法
C++ 代码
//不同路径数(DFS)
#include <iostream>
#include <unordered_map>
using namespace std;
const int N = 10;
int g[N][N], cnt;
bool st[N][N];
unordered_map<int, int> d;
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
int n, m, k;
void dfs(int x, int y, int u, int state)
{
if(u == k + 1)
{
if(!d[state]) cnt ++;
d[state] ++;
return;
}
for(int i = 0 ; i < 4 ; i ++)
{
int a = x + dx[i], b = y + dy[i];
if(a <= 0 || a > n || b <= 0 || b > m) continue;
dfs(a, b, u + 1, state * 10 + g[a][b]);
}
}
int main()
{
cin >> n >> m >> k;
for(int i = 1 ; i <= n ; i ++)
for(int j = 1 ; j <= m ; j ++)
cin >> g[i][j];
for(int i = 1 ; i <= n ; i ++)
for(int j = 1 ; j <= m ; j ++)
dfs(i, j, 1, g[i][j]);
cout << cnt << endl;
return 0;
}