AcWing 1351. 密码锁(哈希表+dfs)!!!
原题链接
简单
作者:
Vason
,
2024-04-15 21:46:12
,
所有人可见
,
阅读 4
哈希+dfs
#include <iostream>
#include <cstring>
#include <map>
using namespace std;
map<int, int> h;
int n, res;
int a[3];
void dfs(int u, int m)
{
if(u >= 3)
{
if(!h.count(m)) h.insert({m, 1}), res ++; // 判断该答案是否出现过,第一次出现则加一
return;
}
for(int i = -2; i <= 2; i ++)
{
int x = a[u] + i;
dfs(u + 1, m * 10 + ((x % n + n) % n));
}
}
int main()
{
cin >> n;
for(int t = 0; t < 2; t ++)
{
for(int i = 0; i < 3; i ++) cin >> a[i];
dfs(0, 0); // dfs枚举所有可能是解的号码
}
cout << res;
return 0;
}