luogu P2693 号码锁 模拟

 1 //难点在于锁有容错性,左右相邻均可。并且这里题目规定了从1开始,所以不倾向与从0开始。这里写一个函数来单独用来判断相邻的问题,做题时,如果某个部分感到实现困难可以将其拆成不同部分,逐一击破。 
 2 #include <cstdio>
 3 #include <algorithm>
 4 using namespace std;
 5 int n,res;
 6 int pwd[3][4];
 7 bool cls(int x,int y)
 8 {
 9     if (max(x,y) - min(x,y) <= 2)
10         return true;
11     if (min(x,y) + n - max(x,y) <= 2)
12         return true;
13     return false;
14 }
15 bool ok(int i,int j,int k)
16 {
17     for (int o = 1;o <= 2;o++)
18         if (cls(i,pwd[o][1]) && cls(j,pwd[o][2]) && cls(k,pwd[o][3]))
19             return true;
20     return false;
21 }
22 int main()
23 {
24     scanf("%d",&n);
25     for (int o = 1;o <= 2;o++)
26         for (int i = 1;i <= 3;i++)
27             scanf("%d",&pwd[o][i]);
28     for (int i = 1;i <= n;i++)
29         for (int j = 1;j <= n;j++)
30             for (int k = 1;k <= n;k++)
31                 if (ok(i,j,k))
32                     res++;
33     printf("%d\n",res);
34     return 0;
35 }

 

posted @ 2019-07-06 17:10  IAT14  阅读(162)  评论(0编辑  收藏  举报