AcWing1351.密码锁 [操作系统入门]
原题链接
考察:暴力枚举
完全是因为有容斥原理才做了这题,结果这题和容斥原理有啥关系...
思路:
dfs枚举所有可能性
1 #include <iostream>2 #include <algorithm>
3 #include <set>
4 #include <vector>
5usingnamespace std;
6 typedef longlong ll;
7 vector<int> v[10],t;
8set<vector<int> > s;
9void dfs(int k,int sz)
10{
11if(sz==3)
12 {
13 s.insert(t);
14return;
15 }
16for(int i=0;i<v[k].size();i++)
17 {
18 t.push_back(v[k][i]);
19 dfs(k+1,sz+1);
20 t.pop_back();
21 }
22}
23int main()
24{
25int n;
26 scanf("%d",&n);
27for(int i=1;i<=6;i++)
28 {
29int x; scanf("%d",&x);
30for(int d=-2;d<=2;d++)
31 {
32if(x+d>0&&x+d<=n) v[i].push_back(x+d);
33elseif(x+d>n&&x+d-n>0&&x+d-n<=n) v[i].push_back(x+d-n);
34elseif(x+d<=0&&x+d+n<=n&&x+d+n>0) v[i].push_back(x+d+n);
35 }
36 }
37 dfs(1,0);
38 dfs(4,0);
39 ll ans = s.size();
40 printf("%lld
",ans);
41return0;
42 }
AcWing 1351. 密码锁
以上是 AcWing1351.密码锁 [操作系统入门] 的全部内容, 来源链接: utcz.com/z/519484.html