POJ - 3278 Catch That Cow 简单搜索
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point?N?(0 ≤?N?≤ 100,000) on a number line and the cow is at a point?K?(0 ≤?K?≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.
* Walking: FJ can move from any point?X?to the points?X?- 1 or?X?+ 1 in a single minute
* Teleporting: FJ can move from any point?X?to the point 2 ×?X?in a single minute.
If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?
Input
Line 1: Two space-separated integers:?N?and?K
Output
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
Sample Input
5 17Sample Output
4Hint
The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
這道題是關于最短步數的,首先就要想到廣搜,既然想到了廣搜就可以寫代碼了。
#include<iostream> #include<queue> #include<algorithm> #include<set> #include<cmath> #include<vector> #include<map> #include<stack> #include<bitset> #define Swap(a,b) a^=b^=a^=b #define cini(n) scanf("%d",&n) #define cinl(n) scanf("%lld",&n) #define cinc(n) scanf("%c",&n) #define coui(n) printf("%d",n) #define couc(n) printf("%c",n) #define coul(n) printf("%lld",n) #define speed ios_base::sync_with_stdio(0);//?D2??éó?scnaf£? #define Max(a,b) a>b?a:b #define Min(a,b) a<b?a:b using namespace std; typedef long long ll; const int INF=0x3f3f3f3f; const int maxn=1e6+10; const double esp=1e-9; int m,n,x,y; int cnt,mini=INF; bool flag[maxn]; int bfs(int x); int main() {cin>>m>>n;cout<<bfs(m)<<endl; } int bfs(int x) {queue<pair<int,int> > t;t.push(make_pair(x,0));while(!t.empty()){pair<int,int>w=t.front();if(w.first==n)break;t.pop();w.first++,w.second++;if(w.first<0||w.first>100000||flag[w.first]);else t.push(w),flag[w.first]=1;w.first-=2;if(w.first<0||w.first>100000||flag[w.first]);else t.push(w),flag[w.first]=1;w.first++;w.first*=2;if(w.first<0||w.first>100000||flag[w.first]);else t.push(w),flag[w.first]=1;}return t.front().second; }?
總結
以上是生活随笔為你收集整理的POJ - 3278 Catch That Cow 简单搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长城汽车:今年将在澳洲市场陆续上市坦克、
- 下一篇: POJ - 1321 棋盘问题