文章
26
粉丝
0
获赞
82
访问
2.8k
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
int mp[N];
bool vis[N];
bool inmp(int x)
{
if(x < 1 || x > 1e5) return false;
if(vis[x]) return false;
return true;
} //边界判断
void bfs(int N, int K)
{
bool flag = false;
int step = 0; queue<int> q;
q.push(N); vis[N] = true; mp[N] = step;
while(!q.empty() && !vis[K])
{
int ssize = q.size(); //辅助判现在是第几个step喵
step ++;
for(int i = 1; i <= ssize; i ++)
{
if(vis[K]) {flag = true; break;}
int ele = q.front(); q.pop();
int temp = ele + 1; //第一种
if(inmp(temp))
{
q.push(temp);
vis[temp] = true;
mp[temp] = step;
}
temp = ele - 1; //第二种
if(inmp(temp))
{
q.push(temp);
vis[temp] = true;
mp[temp] = step;
}
temp = ele * 2; //第三种
if(inmp(temp))
{
q.push(temp);
vis[temp] = true;
mp[temp] = step;
}
}
if(flag) break;
}
cout <&...
登录后发布评论
暂无评论,来抢沙发