Leetcode-1007 Minimum Domino Rotations For Equal Row(行相等的最少多米诺旋转)

 1 class Solution
 2 {
 3     public:
 4         int minDominoRotations(vector<int>& A, vector<int>& B)
 5         {
 6             int rrnt = INT_MAX;
 7             for(int i = 1; i <= 6;i ++)
 8             {
 9                 for(int j = 0;j < 2;j ++)
10                 {
11                     int rnt = 0;
12                     if(j==0)
13                     {
14                         int k;
15                         for(k = 0;k < A.size();k ++)
16                         {
17                             if(A[k]!=i&&B[k]==i)
18                                 rnt ++;
19                             else if(A[k]!=i&&B[k]!=i)
20                                 break;
21                         }
22                         if(k==A.size())
23                             rrnt = min(rrnt,rnt);
24                     }
25                     else
26                     {
27                         int k;
28                         for(k = 0;k < A.size();k ++)
29                         {
30                             if(B[k]!=i&&A[k]==i)
31                                 rnt ++;
32                             else if(B[k]!=i&&A[k]!=i)
33                                 break;
34                         }
35                         if(k==A.size())
36                             rrnt = min(rrnt,rnt);
37                     }
38                 }
39             }
40             if(rrnt==INT_MAX)
41                 return -1;
42             else
43                 return rrnt;
44         }
45 };

假设上面一排全是1,或者下面一排全是1,或者上面一排全是2,或者下面一排全是2......一共12个循环。每种循环如果不符合,就翻转一下看看对面能不能给他安排上,如果翻转过还是安排不上,那这种情况就不可能,开始下一轮循环。

猜你喜欢

转载自www.cnblogs.com/Asurudo/p/10504856.html