首页 > 代码库 > HDU2717 Catch That Cow

HDU2717 Catch That Cow

题目:HDU2717

 

题解:居然一遍就过了!!开心!!大致上跟那个跳棋的差不多,这个比那个简单只有一维数组。所以只要把走路的规则改一下就行了

 

代码:

 1 #include<cstdio>
 2 #include<queue>
 3 #include<cstring>
 4 #define maxn 100005
 5 using namespace std;
 6 
 7 int n,k,m,mm,dis[maxn];
 8 bool f[maxn];
 9 
10 void bfs()
11 {
12     queue<int> q;
13     q.push(n);
14     memset(f,true,sizeof(f));
15     memset(dis,0,sizeof(dis));
16     f[n]=false;
17 
18     while(!q.empty())
19     {
20         m=q.front();
21         q.pop();
22 
23         if(m==k) break;
24 
25         for(int i=-1;i==-1||i==1;i=i+2)
26         {
27             mm=m+i;
28             if(mm>=0&&mm<=100000&&f[mm])
29             {
30                 q.push(mm);
31                 f[mm]=false;
32                 dis[mm]=dis[m]+1;
33             }
34         }
35 
36         mm=2*m;
37         if(mm>=0&&mm<=100000&&f[mm])
38         {
39             q.push(mm);
40             f[mm]=false;
41             dis[mm]=dis[m]+1;
42         }
43 
44 
45     }
46 }
47 
48 int main()
49 {
50     while(scanf("%d%d",&n,&k)!=EOF)
51     {
52         bfs();
53         printf("%d\n",dis[k]);
54     }
55 
56     return 0;
57 }

 

HDU2717 Catch That Cow