【題目描述】
農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n
(0≤n≤100000
),牛位於點k
(0≤k≤100000
)。農夫有兩種移動方式:
1、從x移動到x−1或x+
1,每次移動花費一分鐘
2、從x移動到2×x,每次移動花費一分鐘
假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多少時間才能抓住牛?
【輸入】
兩個整數,n和k。
【輸出】
乙個整數,農夫抓到牛所要花費的最小分鐘數。
【輸入樣例】517
【輸出樣例】
4
這是一道廣搜題,一開始就沒有什麼思路。後來畫了乙個樹狀圖,從起點出發,畫出能到達的相鄰點,一看這個圖,瞬間就明白了用廣搜來做(從起點2→終點7的圖)。
**如下:
#include
using
namespace std;
int n, a, b, vis[
100005];
struct node
node
(int xx,
int mmin)};
boolin(
int x)
void
bfs(
int x)
for(
int i=
0; i<
3; i++)}
}}intmain()
1253 抓住那頭牛
農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x 移動到x 1或x 1 每次移動花費一分鐘 2 從x移動到2 x 每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多...
1253 抓住那頭牛
1253 抓住那頭牛 時間限制 1000 ms 記憶體限制 65536 kb 提交數 8246 通過數 3066 題目描述 農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x移動到x 1或x ...
1253 抓住那頭牛
1 include2 using namespace std 3int n,k 4struct node 7 node que 100010 結構體陣列表示佇列 8int f,r 定義隊首和隊尾 9bool vis 100010 數軸位置是否被訪問過 10void move int nx,int f...