问题描述:

已知所有砝码重量均为3的倍数,且所有重量的砝码有且只有一个

要求输出重量1到n的所有物品的称重方式

解题思路:

用字符串拼接结果

三进制的返回值为0 1 2

返回值为0则表示该权重不取

返回值为1表示加上该权重

返回值为2表示该权重需要加上两遍,不符合题意. 故需将其转换为-1减掉该位权重,对商进行改变.

如: 2 ÷ 3 - 2 ... 0   ==   -1 ... 1

代码实现:

import java.util.Scanner;
public class Main {public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int w = input.nextInt();

        for (int i = 1; i <= w; i++) {
            System.out.println(i + ": " + fun(i));
        }

        input.close();
    }
    public static String fun(int w) {
       String str = "";

        int q = 1;   //权重
        while(w > 0) {
            int s = w/3;   //商
            if (w%3 == 1) str = "+" + q + str;    //若余数为1则加上当前权重
            if (w%3 == 2) {    //若余数为2则减去当前权重
                //w += q;
                s++;
                str = "-" + q + str;
            }
            w = s;
            q *= 3;
        }

        return str.substring(1);   //去掉str首符号返回}
}

编译运行:

查阅相关github代码请移步:https://github.com/striner/javaCode/blob/master/Weigher%20weighing%20II

经典算法之天平称重问题(进制解法)相关推荐

  1. 51NOD 1449 砝码称重(贪心+进制思想)

    题目连接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1449 1449 砝码称重 题目来源: CodeForces 基 ...

  2. 小单刷题笔记之天平称重 (巧用进制)

    题目: 用天平称重时,我们希望尽可能少的砝码组合称出尽可能多的重量,如果有无限个砝码,但它们的重量是1,3,9,27..等三的指数幂,神奇的是用它们组合可以称出任意的重量.本题要求实现,用户给出重量, ...

  3. 蓝桥杯数学题:天平称重:巧用三进制。基于python3.9的原创代码

    用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量.如果有无限个砝码,但它们的重量分别是1,3,9,27,81,--等3的指数幂神奇之处在于用它们的组合可以称出任意整数重量(砝码允许放在左右 ...

  4. 天平称重【递归解法】

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

  5. 有趣的数据结构算法9——利用栈完成2进制到8进制的转换

    有趣的数据结构算法9--利用栈完成2进制到8进制的转换 解题思路 实现代码 GITHUB下载连接 刚学习完栈的我想试试栈都可以干嘛,于是找到了一个小应用,利用栈完成2进制到8进制的转换.如果大家还不清 ...

  6. 12球称重C语言算法,12小球称重问题

    题目: 已知有12个小球,一样的形状和外观,其中有一个是次品,现在给你一个无砝码的天平,称三次, 把这个次品找出来,并且求出这个次品相对真品是偏重还是偏轻? 解答: 首先把小球分成三堆,每堆四个. A ...

  7. Google面试题原理解析 12个乒乓球其中有1个次品,用天平称重3次找出

    1. 题目 "在12个小球里有一个次品,重量与其他11个球不同.用一个没有砝码的天平,称3次,保证找到那个次品,并且区分出次品是轻还是重呢?" 这个问题看似简单,做起来还真不容易. ...

  8. 算法笔记:时间复杂度、空间复杂度 进制转化 秦九韶算法

    一.何为算法. 算法是解决问题的方法与步骤,一般通过考虑算法的时间复杂度和空间复杂度来判断一个算法的优秀度. eg:常见的时间复杂度:O(1) <O(logn)<  O(n) <O( ...

  9. 进制数转换器的VB算法实现(2/8/10/16进制数可以相互转换)

    在VB6中新建一个工程,当前窗体默认为form1,添加一个框架控件frame.几个文本框控件text.几个标签控件label.两个timer计时器.三个按钮控件.添加一个窗体form2.一个模块mod ...

最新文章

  1. 胡小明:大数据应用方向思考
  2. Python中的元编程:一个关于修饰器和元类的简单教程
  3. 在机器人的眼里到底能看到什么,它们和人类的视觉系统有什么区别?
  4. Python变量和对象类型速记手册
  5. 搬了十次家,总算搬进了自己的家
  6. 【综述】基于Transformer的视频语言预训练
  7. Flutter AnimatedOpacity 实现透明度渐变动画效果
  8. 图像处理中提取中间特征是干什么_PyTorch提取中间层特征?
  9. php openssl.so加载,LINUX下PHP编译添加相应的动态扩展模块so(不需要重新编译PHP,以openssl.so为例)...
  10. xlinx ISE的程序下载
  11. 如何打开设置了密码的ZIP文件?
  12. GitLab实现CICD自动化部署
  13. java中解耦合_简单分析程序中耦合和解耦合
  14. 利用手机app语音控制arduino
  15. 读书笔记:详解FPGA人工智能的驱动引擎(石侃)
  16. PS186:你给我翻译翻译什么叫做惊喜
  17. FPGA基础之内置逻辑门
  18. 【FPGA入门八】自动售货机
  19. 计算机的桌面窗户是什么情况,电脑桌面悬浮窗记事本软件怎么添加?适合桌面显示的便签软件...
  20. ZooKeeper-3.3.4集群安装配置

热门文章

  1. 读《石头剪刀布》总结与感想
  2. 详细解析黑马微信小程序视频--【思维导图知识范围】
  3. 怎样处理或转让二手电脑配件(CPU,硬盘,内存等)
  4. nvflash 报错解决
  5. 【C++编程题】斯诺克台球
  6. 鹅妹子的skimage.measure.regionprops
  7. Lync 2010 学习(十),解决演示白板问题
  8. 类的关系(泛化, 实现,关联,聚合,组合,依赖)
  9. 目标检测(三):SSD
  10. 著名博客jimdo免费版停止运行