日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ 3278 Catch That Cow(BFS)

發布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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?K

Output

Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input

5 17

Sample Output

4

Hint

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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。