vasya 發現了乙個奇怪的裝置。在裝置的前面板上,有乙個紅色按鈕、乙個藍色按鈕和乙個顯示了某個正整數的螢幕。在按下紅色按鈕之後,裝置將顯示的數字乘以 2。在按下藍色按鈕之後,裝置將顯示的數字減去 1。如果在某時刻,數字不再是正數,則裝置終止執行。顯示螢幕可以顯示任意大的數字。初始狀態下,顯示螢幕顯示了數字 n
。bob 想要在顯示螢幕上得到數字 m
。為了獲得這個結果,他最小需要按下多少次按鈕?
輸入輸入的第一行 (也是唯一的一行),包含了兩個不同的整數 n
和 m(1 ≤ n, m ≤ 104
),以空格間隔。
輸出列印僅有的乙個數字 — 為了從數字 n
得到數字 m
,必須最少按下多少次按鈕。
示例輸入
4 6
輸出
2
輸入
10 1
輸出
9
題解 : 進行乙個很裸的bfs就可以了
#include
#include
#include
using
namespace
std;
int n,m;
struct fun;
int b[1000000];
queue
qq;long
long
bfs(int v)
qq.pop();
for(int i=0;i<2;i++)
if(i==1)
if(b[p]==0&&p>0&&p<=2*m)
} }}int
main
() while(!qq.empty())
long
long h=0;
// while(m/2>n)
// h-=1;
// n/=2;
// printf("%d\n",n);
h+=bfs(n);
printf("%lld\n",h);
return0;}
寬搜 走出迷宮
描述 當你站在乙個迷宮裡的時候,往往會被錯綜複雜的道路弄得失去方向感,如果你能得到迷宮地圖,事情就會變得非常簡單。假設你已經得到了乙個n m的迷宮的圖紙,請你找出從起點到出口的最短路。輸入第一行是兩個整數n和m 1 n,m 100 表示迷宮的行數和列數。接下來n行,每行乙個長為m的字串,表示整個迷宮...
寬搜入門 魔板
在成功地發明了魔方之後,魯比克先生發明了它的二維版本,稱作魔板。這是一張有8個大小相同的格仔的魔板 1 2 3 4 8 7 6 5 我們知道魔板的每乙個方格都有一種顏色。這8種顏色用前8個正整數來表示。可以用顏色的序列來表示一種魔板狀態,規定從魔板的左上角開始,沿順時針方向依次取出整數,構成乙個顏色...
演算法 迷宮問題(寬搜)
bfs不同於dfs,它不需要用到顯式的遞迴操作,而是將狀態儲存在佇列中,可以用來求權值為1的最短路。每次都將隊首的元素取出,然後將可以由這個元素經過一步操作達到的放入隊尾。在最短路問題中只要到達過的節點,之後就不會再到達。給定乙個n m的二維整數陣列,用來表示乙個迷宮,陣列中只包含0或1,其中0表示...