zoukankan      html  css  js  c++  java
  • 1771整数变换问题(搜索+剪枝)

    Description

    整数变换问题。关于整数i的变换f和g定义如下:f(i)=3i;
    试设计一个算法,对于给定的2 个整数n和m,用最少的f和g变换次数将n变换为m。例如,可以将整数15用4 次变换将它变换为整数4:4=gfgg(15)。当整数n不可能变换为整数m时,算法应如何处理?
    对任意给定的整数n和m,计算将整数n变换为整数m所需要的最少变换次数。

    Input

    输入数据的第一行有2 个正整数n和m。n≤100000,m≤1000000000。

    Output

    将计算出的最少变换次数以及相应的变换序列输出。第一行是最少变换次数。第2 行是相应的变换序列。

    Sample

    Input 

    15 4

    Output 

    4
    gfgg

    Hint

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int n, m, top;
     6 char re[105];
     7 
     8 int dfs(int cur, int step)
     9 {
    10     if(step > top) return 0;
    11     else
    12     {
    13         if(cur*3==m||dfs(cur*3, step+1))
    14         {
    15             re[step] = 'f';
    16             return 1;
    17         }
    18         else if(cur/2==m||dfs(cur/2, step+1))
    19         {
    20             re[step] = 'g';
    21             return 1;
    22         }
    23         return 0;
    24     }
    25 }
    26 
    27 int main()
    28 {
    29     int i;
    30     cin >> n >> m;
    31     top = 1;
    32     while(!dfs(n, 1))
    33     {
    34         top++;
    35     }
    36     cout << top << endl;
    37     for(i=top;i>=1;i--)
    38     {
    39         cout << re[i];
    40     }
    41     cout << endl;
    42     return 0;
    43 }
  • 相关阅读:
    Neo4j电影关系图Cypher
    Neo4j电影关系图
    Neo4j配置文件neo4j.conf
    SpringBoot实现多数据源(实战源码)
    Maven添加Oracle驱动及依赖
    HttpClient发送Json数据到指定接口
    java手动分页处理
    设计模式之模板方法模式
    JDBC插入性能优化对比
    Oracle数据库常用监控语句
  • 原文地址:https://www.cnblogs.com/0xiaoyu/p/14100626.html
Copyright © 2011-2022 走看看