DOG'sTJ
2024-04-06 11:41:31
发布于:浙江
24阅读
0回复
0点赞
这里有模拟的味道...
#include<bits/stdc++.h>
using namespace std;
int n,k;
int vis[100005];
struct cao
{
int now;
int min;
};
int bfs(int n)
{
queue<cao> a;
a.push({n,0});
while(a.size())
{
cao nw=a.front();
vis[nw.now]=1;
a.pop();
if(nw.now==k)
{
return nw.min;
}
else if(nw.now>k && nw.now-1>=0 && !vis[nw.now-1])
{
a.push({nw.now-1,nw.min+1});
}
else
{
if(nw.now+1<=100000 && !vis[nw.now+1])
{
a.push({nw.now+1,nw.min+1});
}
if(nw.now*2<=100000 && !vis[nw.now*2])
{
a.push({nw.now*2,nw.min+1});
}
if(nw.now-1>=0 && !vis[nw.now-1])
{
a.push({nw.now-1,nw.min+1});
}
}
}
}
int main()
{
cin>>n>>k;
cout<<bfs(n);
return 0;
}
这里空空如也
有帮助,赞一个