POJ 3278 Catch That Cow(BFS)
題目網址:http://poj.org/problem?id=3278
題目:
Catch That Cow| Time Limit:?2000MS | ? | Memory Limit:?65536K |
| Total Submissions:?92360 | ? | Accepted:?28999 |
Description
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?KOutput
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.思路:?
很簡單的一道BFS題。總共只有三種操作,每次都取隊首元素分別進行三種操作,再對操作結果進行判斷,篩去負數和超過100,000(邊界值)的情況,其他情況都入隊。
代碼:
1 #include <cstdio> 2 #include <queue> 3 #include <algorithm> 4 using namespace std; 5 int visited[100005]; 6 int n,k; 7 queue<int>q; 8 void bfs(){ 9 q.push(n); 10 while (!q.empty()) { 11 int x=q.front();q.pop(); 12 if(x==k){ 13 printf("%d\n",visited[x]-1);//初始次數為1,結果減去1 14 return ; 15 } 16 if(x-1>=0 && !visited[x-1]){//負數不考慮 17 q.push(x-1); 18 visited[x-1]=visited[x]+1; 19 } 20 if(x+1<=100000 && !visited[x+1]){//超過邊界值的要篩去,否則會占用不必要的搜索時間 21 q.push(x+1); 22 visited[x+1]=visited[x]+1; 23 } 24 if(x*2<=100000 && !visited[x*2]){ 25 q.push(x*2); 26 visited[x*2]=visited[x]+1; 27 } 28 } 29 } 30 int main(){ 31 scanf("%d%d",&n,&k); 32 visited[n]=1;//初始位置也要賦值,防止第二次搜索到 33 bfs(); 34 return 0; 35 }?
轉載于:https://www.cnblogs.com/uniles/p/7145860.html
總結
以上是生活随笔為你收集整理的POJ 3278 Catch That Cow(BFS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input文本框设置移除默认内容(兼容I
- 下一篇: Arduino学习笔记35