演算法基礎 抓住那頭牛 廣度優先搜尋演算法

2021-10-20 07:32:08 字數 874 閱讀 3637

題目:

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

1、從x移動到x-1或x+1,每次移動花費一分鐘

2、從x移動到2*x,每次移動花費一分鐘

假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多少時間才能抓住牛?

輸入

兩個整數,n和k

輸出

乙個整數,農夫抓到牛所要花費的最小分鐘數

樣例輸入

5 17

樣例輸出

4這是乙個典型的廣度優先搜尋演算法,用佇列來一層一層解決問題

#include

#include

#include

using

namespace std;

int n,k;

const

int maxn=

100000

;int visited[maxn+10]

;struct step};

queue q;

//佇列,即open表

intmain()

else

if(s.x+

1<=maxn&&

!visited[s.x+1]

)if(s.x*

2<=maxn&&

!visited[s.x*2]

) q.

pop();

}}return0;

}

廣度優先搜尋 入門 抓住那頭牛

農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上 農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x移動到x 1或x 1,每次移動花費一分鐘 2 從x移動到2 x,每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要 花多...

廣度優先搜尋 抓住那頭牛(poj 3278)

描述 農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x移動到x 1或x 1,每次移動花費一分鐘 2 從x移動到2 x,每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要...

基礎演算法 深度優先搜尋DFS與廣度優先搜尋BFS

深搜 depth first search 和廣搜 breadth first search 是兩種基本搜尋演算法,均採用窮舉策略 下面以老鼠走迷宮 maze.cpp 為例給出它們的模板 問題描述 乙隻老鼠從迷宮的左上角走到右下角 如下圖 中間不能穿越障礙 陰影部分 任務 給出迷宮的形狀,請你求出老...