zoukankan      html  css  js  c++  java
  • 求x到y的最少计算次数 (BFS)

    时间限制:1秒

    空间限制:262144K

    给定两个-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

    输出例子1:
    3

    思路:广度优先搜索。(队列实现)

     1 #include <iostream>
     2 #include <queue>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 int main() {
     7     int x, y;
     8     int cnt = 0;
     9     bool flag = false;
    10     scanf("%d,%d", &x, &y);
    11     queue<int> q;
    12     q.push(x);
    13     while (!q.empty()) {
    14         int len = q.size();
    15         for (int i = 0; i < len; i++) {
    16             int tmp = q.front();
    17             q.pop();
    18             if (tmp == y) {
    19                 flag = true; 
    20                 break;
    21             } else {
    22                 q.push(tmp + 1);
    23                 q.push(tmp - 1);
    24                 q.push(tmp * 2);
    25             }
    26         }
    27         if (flag)
    28             break;
    29         cnt++;
    30     }
    31     cout << cnt << endl;
    32     return 0;
    33 }
     1 #include <iostream>
     2 #include <queue>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 int main() {
     7     int x, y;
     8     scanf("%d,%d", &x, &y);
     9     queue<pair<int, int> > q;
    10     pair<int, int> tmp({x, 0});
    11     q.push(tmp);
    12     
    13     while (!q.empty()) {
    14         tmp = q.front();
    15         q.pop();
    16         if (tmp.first == y) {
    17             cout << tmp.second << endl;
    18             break;
    19         } else {
    20             q.push({tmp.first + 1, tmp.second + 1});
    21             q.push({tmp.first - 1, tmp.second + 1});
    22             q.push({tmp.first * 2, tmp.second + 1});
    23         }
    24     }
    25     return 0;
    26 }
  • 相关阅读:
    uvm_misc——杂货铺(miscellaneous)
    23种设计模式及其应用场景
    Hadoop TextInputFormat源码分析
    java字符串替换函数高效实现
    hadoop HA 之 QJM
    中文分词词性对照表
    计算两个字符串编辑距离
    java 图片处理
    zookeeper数据迁移
    正则表达式
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/11456996.html
Copyright © 2011-2022 走看看