首页 > 其他分享 >BFS最短路径(求x到y的最少计算次数)

BFS最短路径(求x到y的最少计算次数)

时间:2022-10-26 20:03:18浏览次数:61  
标签:tmp int make 最短 BFS second 最少 pair first


 

给定两个-100到100的整数x和y,对x只能进行加1,减1,乘2操作,问最少对x进行几次操作能得到y?

例如:
a=3,b=11: 可以通过3*2*2-1,3次操作得到11;
a=5,b=8:可以通过(5-1)*2,2次操作得到8;
 

 

输入描述:


输入以英文逗号分隔的两个数字,数字均在32位整数范围内。


 

输出描述:


输出一个数字


示例1

输入


3,11


输出


3


#include<iostream>
#include<unordered_set>
#include<queue>
#include<vector>
using namespace std;

int BFS(int a,int b){
queue<pair<int,int>> q;
unordered_set<int> Exist;
q.push(make_pair(a,0));
while(!q.empty()){
auto tmp = q.front();
q.pop();
if(tmp.first == b){
return tmp.second;
}
if(Exist.find(tmp.first) != Exist.end()){
continue;
}
Exist.insert(tmp.first);
q.push(make_pair(tmp.first + 1,tmp.second + 1));
q.push(make_pair(tmp.first - 1,tmp.second + 1));
q.push(make_pair(tmp.first * 2,tmp.second + 1));
}
}

int main(){
int a,b;
char c;
int Result = 0;
while(cin >> a >> c >> b){
Result = BFS(a,b);
cout << Result << endl;
}
return 0;
}

 

标签:tmp,int,make,最短,BFS,second,最少,pair,first
From: https://blog.51cto.com/u_13121994/5798300

相关文章

  • BFS--宽搜求最短路径
    1010#S######.#......#..#.#.##.##.#.#........##.##.####....#....#.#######.#....#......####.###.....#...G##是障碍,.是通道,S是起点,G是终点求出最短路径长度......
  • 贪心--带最少的零钱
    题目描述你就要去购物了,现在你手上有N种不同面值的硬币,每种硬币有无限多个。为了方便购物,你希望带尽量少的硬币,但要能组合出1到X之间的任意值。输入格式第一行两个数X、N,以......
  • 并查集--同时修路得到的最短时间
    题目背景AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。题目描述给出A地区的村庄数NN,和公路数MM,公路是双向的。并告诉你每条公路的连......
  • 862. 和至少为 K 的最短子数组
    862.和至少为K的最短子数组给你一个整数数组nums和一个整数k,找出nums中和至少为k的最短非空子数组,并返回该子数组的长度。如果不存在这样的子数组,返回-1......
  • 934. 最短的桥
    Problem:934.最短的桥目录思路解题方法复杂度Code思路基础解题思路:针对岛问题的解决方法有一种通用的解,就是对上、下、左、右各个方向进行查找,判断其是否为1......
  • 934. 最短的桥
    934.最短的桥给你一个大小为nxn的二元矩阵grid,其中1表示陆地,0表示水域。岛是由四面相连的1形成的一个最大组,即不会与非组内的任何其他1相连。grid中恰......
  • POJ 3278(BFS-搜索范围)
    这题是BFS水的主要是范围0<=n,k<=100000 但是有可能搜到200000……半天功夫才A.programP3278;constmaxn=200000;varn,k,i,j:longint;q,deep:array[1..maxn]of......
  • 两点之间直线最短,你写的是代码,我写的是艺术
    随着需求迭代,团队代码量逐渐增多,熵增崭露头角。临近月底,我打开部分程序,再做一次代码走查。 ✅两点之间直线最短我在做代码走查的时候,发现一个service方法里有这么一段......
  • 水灾 (BFS-先洪水后寻路)
    水灾(sliker)大雨应经下了几天雨,却还是没有停的样子。ksy刚从外地回来,知道不久除了自己家,其他的地方都将会被洪水淹没。ksy的老家可以用一个N*M的地图表示,地图上有五种符号:“.......
  • Nearest Excluded Points ( 转化思想 +多源BFS )
     思路:思路暴力枚举每一个点,暴力做时间会超观察发现:每一个所找的空白点,一定是紧紧挨着红色的点, 于是把这些空白点入队,然后利用bfs,即可搞出来空间用ma......