• [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 }
  • 相关阅读:
    RayTracing练习
    聚类方法总结
    Mysql、SqlServer和Oracle 添加修改删除字段
    gridview增加thead 和tbody
    数据库设计的三大范式
    c#+sql事务
    gridview应用
    DOS命令大全 IIS命令大全 SQL命令大全……
    TFS
    C#.NET官方类库Json序列化,反序列化
  • 原文地址:https://www.cnblogs.com/you-well-day-fine/p/4260768.html
Copyright © 2020-2023  润新知