• 天平称重【递归解法】


    用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
    如果只有5个砝码,重量分别是1,3,9,27,81
    则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。

    本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
    例如:
    用户输入:
    5
    程序输出:
    9-3-1
    用户输入:
    19
    程序输出:
    27-9+1

    要求程序输出的组合总是大数在前小数在后。
    可以假设用户的输入的数字符合范围1~121。

    // 天平称重,递归解法
    public class A
    {
        // 把s中的符号取反(+变-,-变+)
        static String reve(String s){
            s = s.replace('-','#');
            s = s.replace('+','-');
            s = s.replace('#','+');
            return "-" + s;
        }
        
        static String f(int x){
            int a = 1;
            while(a<x) a *= 3;
            
            if(a==x) return "" + a;
            
            if(x<=a/2) return a/3 + "+" + f(x-a/3);
            
            return a + reve(f(a-x));
        }
        
        public static void main(String[] args){
            for(int i=1; i<100; i++){
                System.out.println(i + ": " + f(i));
            }
        }
    }
  • 相关阅读:
    JavaScript 的 Promise
    MacOS copy图标shell脚本
    ExtJS 修改load paging时的参数
    JSONP
    8种跨域解决方案
    Ext Store Proxy Ajax
    ExtJS 自定义组件
    MacOS Apache配置
    xshell 上传 下载文件
    shell 内网主机存活探测器
  • 原文地址:https://www.cnblogs.com/jizhidexiaobai/p/8594300.html
Copyright © 2020-2023  润新知