題目大意:給出兩個數n,k;經過兩種操作使n成為k所需要的步數;操作1:n=n+1或n=n-1;操作2:n=n×2;
解題思路:用bfs搜尋,vis陣列標記狀態同時記錄到當前位置所用的步數;
**:#include #include #include using namespace std;
int n,k;
int vis[100005];
void bfs()
now=temp+1;
if(now>=0&&now<100005&&vis[now]==-1)
now=temp*2;
if(now>=0&&now<100005&&vis[now]==-1)
}}int main()
{ while(cin>>n>>k)
{memset(vis,-1,sizeof(vis));
bfs();
cout<
POJ 3278 題解 搜尋
牛 奶牛在k處不動 fj在n處去抓,最快要多長時間 某時刻fj的座標為x,fj有3種走法,每次每種走法1分鐘 往前走一步 往後走一步 傳送到2x處 time 1000 ms memory 65536 kb 搜尋 include include include include using namesp...
POJ 3278 簡單廣搜
poj3278 題意 輸入n,m,求由n到m需要最少步數,n只能加一減一或者乘二。寫的第二道廣搜題,發現用佇列就是每一種可能讀入隊尾,然後再從隊首乙個乙個的遍歷。需要做的是判斷條件和記錄步數。includeusing namespace std include include include def...
POJ 3278 解題報告
這道題是個bfs的問題,因為要求的是乙個相鄰節點間距離都為1的graph中兩個節點間的最短距離。一開始上來用的dfs,結果可想而知。3278 accepted 844k 63ms g 1192b id thestor1 lang c task poj3278 include include incl...