zoukankan      html  css  js  c++  java
  • [kuangbin带你飞]专题一 简单搜索

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<queue>
     6 using namespace std;
     7 bool cup[105][105][105];
     8 struct dot
     9 {
    10     int a;
    11     int b;
    12     int c;
    13     int s;
    14 };
    15 int x, y, z;
    16 bool flag;
    17 
    18 int clam(int a, int b, int c)
    19 {
    20     int s;
    21     switch(c)
    22     {
    23         case 1:    s = x;    break;
    24         case 2:    s = y;  break;
    25         case 3:    s = z;     break;
    26     }
    27     if( a+b < s)    return a;
    28     else            return s-b;
    29 }
    30 
    31 int main()
    32 {
    33 //    freopen("in.in","r",stdin);
    34 //    freopen("out.txt","w",stdout);
    35     while(scanf("%d%d%d",&x,&y,&z),x|y|z)
    36     {
    37         if( x& 1 )
    38         {
    39             printf( "NO
    " );
    40             continue;
    41         }
    42         memset(cup,false,sizeof(cup));
    43         flag = false;
    44         queue<dot>q;
    45         dot s, t;
    46         s.a = x;
    47         s.b = 0;
    48         s.c = 0;
    49         s.s = 0;
    50         q.push(s);
    51         while(q.size())
    52         {
    53             s = q.front();
    54             q.pop();
    55             cup[s.a][s.b][s.c] = true;
    56             
    57             if((s.a==x/2 && s.b==x/2) || (s.c==x/2 && s.b==x/2) || (s.c==x/2 && s.a==x/2) )
    58             {
    59                 flag = true;
    60                 break;
    61             }    
    62             t.s = s.s + 1;
    63             
    64             t.a = s.a - clam(s.a,s.b,2);
    65             t.b = s.b + clam(s.a,s.b,2);
    66             t.c = s.c;
    67             if(cup[t.a][t.b][t.c]==false)    q.push(t);
    68             t.a = s.a + clam(s.b,s.a,1);
    69             t.b = s.b - clam(s.b,s.a,1);
    70             t.c = s.c;
    71             if(cup[t.a][t.b][t.c]==false)    q.push(t);
    72             t.a = s.a; 
    73             t.b = s.b + clam(s.c,s.b,2);
    74             t.c = s.c - clam(s.c,s.b,2);
    75             if(cup[t.a][t.b][t.c]==false)    q.push(t);
    76             t.a = s.a; 
    77             t.b = s.b - clam(s.b,s.c,3);
    78             t.c = s.c + clam(s.b,s.c,3);
    79             if(cup[t.a][t.b][t.c]==false)    q.push(t);
    80             t.a = s.a - clam(s.a,s.c,3);
    81             t.b = s.b;  
    82             t.c = s.c + clam(s.a,s.c,3);
    83             if(cup[t.a][t.b][t.c]==false)    q.push(t);
    84             t.a = s.a + clam(s.c,s.a,1);
    85             t.b = s.b;  
    86             t.c = s.c - clam(s.c,s.a,1);
    87             if(cup[t.a][t.b][t.c]==false)    q.push(t);
    88         }
    89         if(flag)
    90         {
    91             while(q.size())    q.pop();
    92             printf("%d
    ",s.s);
    93         }
    94         else    printf("NO
    ");
    95         
    96     }
    97     return 0;
    98 }
  • 相关阅读:
    MFC——9.多线程与线程同步
    hdu 1598 find the most comfortable road(并查集+枚举)
    POJ3107Godfather[树形DP 树的重心]
    Codeforces 410C.Team[构造]
    Codeforces 715A. Plus and Square Root[数学构造]
    BZOJ1015[JSOI2008]星球大战starwar[并查集]
    洛谷U4727小L的二叉树[树转序列 LIS]
    Codeforces 500B. New Year Permutation[连通性]
    Codeforces 549D. Hear Features[贪心 英语]
    Codeforces 549C. The Game Of Parity[博弈论]
  • 原文地址:https://www.cnblogs.com/you-well-day-fine/p/4260768.html
Copyright © 2011-2022 走看看