抓住那頭牛(棧與佇列)(廣搜)

2021-09-26 10:52:32 字數 1169 閱讀 1176

描述

農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點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

151732

13 15 28

12 14 26

23 25 48

1719 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,每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多少時...