給定乙個數字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,...