描述
農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n(0<=n<=100000),牛位於點k(0<=k<=100000)。農夫有兩種移動方式:
1、從x移動到x-1或x+1,每次移動花費一分鐘
2、從x移動到2*x,每次移動花費一分鐘
假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多少時間才能抓住牛?
輸入
兩個整數,n和k
輸出
乙個整數,農夫抓到牛所要花費的最小分鐘數
樣例輸入
5 17
樣例輸出
4
解析:廣搜
一層一層搜尋直到找到結果
一層4 6 10
兩層3 5 8
5 7 12
9 11 20
三層2 4 6
7 9 16
6 8 14
11 13 24
8 10 18
10 12 22
19 21 40
四層1 3 4
1517
32
13 15 28
12 14 26
23 25 48
17
19 36
21 23 44
18 20 38
20 22 42
39 41 80
還需要判重
**實現:
#include #include #include #define maxn 100000
using namespace std;
struct step
};int v[maxn+10];
queueq;
int main()
if(t.s+1<=maxn&&v[t.s+1]==0)
if(t.s*2<=maxn&&v[t.s*2]==0)
q.pop();}}
return 0;
}
抓住那頭牛(廣搜)
描述 農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x移動到x 1或x 1,每次移動花費一分鐘 2 從x移動到2 x,每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要...
抓住那頭牛(BFS廣搜)
描述 農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x移動到x 1或x 1,每次移動花費一分鐘 2 從x移動到2 x,每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要...
資料結構 棧與佇列(三) 抓住那頭牛
農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x移動到x 1或x 1,每次移動花費一分鐘2 從x移動到2 x,每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多少時...