最少步數 SDUT 3080

2021-07-04 10:28:43 字數 855 閱讀 9818

給定乙個數字n,我們可以進行3種操作,加1,減1,如果可以整除2,還可以除2,問最少多少步變換到1.

輸入資料的第一行包含數字n(1<=n<=10000000)。多組輸入。

計算結果。

3

2

看到別人怎麼記憶體的消耗有的竟然是幾百kb,我的四萬kb,都快mle了,但是我幹囧這個題就是bfs,就當bfs的練習吧。#include#include#include#include#include#includeusing namespace std;

int n;

struct node

str;

queue q;//建立乙個以node這個資料型別為節點的佇列,佇列名稱為q;

int vis[10000001];//一定不要太大也不要太小,太大會mle的

int bfs()

memset(vis,0,sizeof(vis));

vis[str.x]=1;//對初始步數的位置標記

q.push(str);//初始值進入佇列

while(!q.empty())

q.pop();

for(int j=0; j<3; j++)

if(j==1)

if(j==2&&next.x%2==0)

++next.step;

if(next.x==1)

if(next.x>=1&&next.x<=10000000&&vis[next.x]==0)//若在範圍內並且沒有被標記過,則被標記,進入佇列}}

return 0;

}int main()

return 0;

}

NYOJ 最少步數

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,1...

最少步數(bfs)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,...

NYOJ 最少步數

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,...