描述
農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n(0<=n<=100000),牛位於點k(0<=k<=100000)。農夫有兩種移動方式:
1、從x移動到x-1或x+1,每次移動花費一分鐘
2、從x移動到2*x,每次移動花費一分鐘
假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多少時間才能抓住牛?
輸入
兩個整數,n和k
輸出
乙個整數,農夫抓到牛所要花費的最小分鐘數
樣例輸入
5 17
樣例輸出
4解析
農夫每次走有三種情況,用寬搜解決問題,不過要注意資料範圍,超出範圍的點不能走;
#include#includeview codeusing
namespace
std;
int ans[100002]=;
bool f[100002]=;
intn,k;
queue
q;void bfs(int
x)
if(!f[z-1]&&z-1>=0
)
if(!f[z*2]&&z*2
<=100000
)
if(ans[k])
}}int
main()
bfs(n);
return0;
}
noi 2971 抓住那頭牛
總時間限制 2000ms 記憶體限制 65536kb 描述農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x移動到x 1或x 1,每次移動花費一分鐘 2 從x移動到2 x,每次移動花費一分鐘 ...
抓住那頭牛
在乙個座標軸上,農夫在n點,牛在k點 假設在整個過程中牛靜止不動 現在農夫可以 1,1,2 的步數,問抓到牛的最小步數 採用stl的queue 第一次使用。include include include using namespace std int n,k const int maxn 10000...
抓住那頭牛
農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點 nn,牛位於點 kk。農夫有兩種移動方式 從 xx 移動到 x 1x 1 或 x 1x 1,每次移動花費一分鐘 從 xx 移動到 2 x2 x,每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多少時間才...