POJ - 3278 Catch That Cow

Posted shiyu-coder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ - 3278 Catch That Cow相关的知识,希望对你有一定的参考价值。

目前只尝试了BFS,不会超时。

 1 #include<iostream>
 2 #include<queue>
 3 using namespace std;
 4 
 5 int line[200000]={0};//number line ,这里选择最大长度的2倍
 6 int N,K;
 7 queue<int> q; //BFS队列
 8 
 9 int main(){
10     cin >>N>>K;
11     if(N==K){ //这里是一个坑!要单独判断N==K的情况
12         cout <<0<<endl;
13         system("pause");
14         return 0;
15     }
16     //BFS
17     q.push(N);
18     while(!q.empty()){
19         int u=q.front();
20         q.pop();
21         int choice[3];
22         choice[0]=u-1; //三种可能的移动目标位置
23         choice[1]=u+1;
24         choice[2]=2*u;
25         for(int i=0;i<3;i++){
26             if(choice[i]>=0&&choice[i]<200000&&line[choice[i]]==0){
27                 line[choice[i]]=line[u]+1;
28                 q.push(choice[i]);
29                 if(choice[i]==K){ //如果到达K点就结束
30                     cout <<line[choice[i]]<<endl;
31                     break;
32                 }
33             }
34         }
35     }
36     system("pause");
37     return 0;
38 }

 

需要注意的一点就是边界情况要记得去考虑一下有没有包含进来,这里N==K这个情况没有考虑到的话就会WA

以上是关于POJ - 3278 Catch That Cow的主要内容,如果未能解决你的问题,请参考以下文章

POJ 3278 Catch That Cow

poj3278Catch That Cow

POJ 3278: Catch That Cow

poj3278 Catch That Cow

POJ 3278 - Catch That Cow - [BFS]

poj3278Catch That Cow