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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【openjudge】抓住那头牛

發(fā)布時間:2024/3/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【openjudge】抓住那头牛 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

描述

農(nóng)夫知道一頭牛的位置,想要抓住它。農(nóng)夫和牛都位于數(shù)軸上,農(nóng)夫起始位于點N(0<=N<=100000),牛位于點K(0<=K<=100000)。農(nóng)夫有兩種移動方式:

1、從X移動到X-1或X+1,每次移動花費一分鐘 2、從X移動到2*X,每次移動花費一分鐘
假設(shè)牛沒有意識到農(nóng)夫的行動,站在原地不動。農(nóng)夫最少要花多少時間才能抓住牛?


輸入
兩個整數(shù),N和K
輸出
一個整數(shù),農(nóng)夫抓到牛所要花費的最小分鐘數(shù)
樣例輸入
5 17
樣例輸出
4


犯了一個我認(rèn)為比較有意義的錯誤:廣搜中必須要出隊之后達(dá)到目標(biāo)再輸出。否則提前輸出可能會因為沒判斷入隊條件而出錯

【代碼】

#include<iostream> #include<cstring> #include<cstdio> #define MAX 100000 using namespace std; struct hp{int num,step; }queue[100005]; int n,m,head,tail,now,step,ans; bool b[100005]; int main(){scanf("%d%d",&n,&m);ans=MAX;head=0,tail=1;queue[tail].num=n,queue[tail].step=0,b[n]=true;while (head<tail){++head;now=queue[head].num,step=queue[head].step;if (now==m) {printf("%d",step);return 0;}if (now+1<=MAX&&!b[now+1]) b[now+1]=true,queue[++tail].num=now+1,queue[tail].step=step+1;if (now-1>=0&&!b[now-1]) b[now-1]=true,queue[++tail].num=now-1,queue[tail].step=step+1;if (now*2<=MAX&&!b[now*2]) b[now*2]=true,queue[++tail].num=now*2,queue[tail].step=step+1; } }


總結(jié)

以上是生活随笔為你收集整理的【openjudge】抓住那头牛的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。