码迷,mamicode.com
首页 > 其他好文 > 详细

POJ - 3278 Catch That Cow

时间:2020-06-15 09:41:22      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:一点   names   include   就是   lin   code   front   pause   注意   

目前只尝试了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

标签:一点   names   include   就是   lin   code   front   pause   注意   

原文地址:https://www.cnblogs.com/shiyu-coder/p/13128913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!