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

回到顶部