砝码称重 5个砝码 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
2013-04-17 13:24
288 查看
/*砝码称重 5个砝码 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。 本题目要求编程实现:对用户给定的重量,给出砝码组合方案。 例如: 用户输入: 5 程序输出: 9-3-1 用户输入: 19 程序输出: 27-9+1 要求程序输出的组合总是大数在前小数在后。 可以假设用户的输入的数字符合范围1~121。 */ import java.util.Scanner; public class Demo07 { public static void f(int n) { int[] sign = new int[]{-1,0,1}; // 定义符号 StringBuffer sb = new StringBuffer(); for(int a:sign){ for(int b:sign){ for(int c:sign){ for(int d:sign){ for(int e:sign){ int i = a*1; int j = b*3; int k = c*9; int l = d*27; int m = e*81; if(i+j+k+l+m==n){ // 找到结果 // 如果不为0,则添加元素,并在"正数"前添加"+"号 sb.append(m!=0?(m>0?"+"+m:m):""); sb.append(l!=0?(l>0?"+"+l:l):""); sb.append(k!=0?(k>0?"+"+k:k):""); sb.append(j!=0?(j>0?"+"+j:j):""); sb.append(i!=0?(i>0?"+"+i:i):""); sb.deleteCharAt(0); // 去掉首元素的"+"号; System.out.println(sb); return; } } } } } } } public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("输入重量(1到121)之间任意整数"); int n = scan.nextInt(); // 输入重量 f(n); } }运行结果:
输入重量(1到121)之间任意整数 19 27-9+1
相关文章推荐
- 使用天平称重,经验证,用四个砝码可以秤出1~40的全部整数重量,请问是哪四个砝码?
- 使用天平称重,经验证,用四个砝码可以秤出1~40的全部整数重量,请问是哪四个砝码?
- 使用天平称重,经验证,用四个砝码可以秤出1~40的全部整数重量,请问是哪四个砝码?
- 使用天平称重,经验证,用四个砝码可以秤出1~40的全部整数重量,请问是哪四个砝码?
- n个球有一个假冒(重量不足),如果给你一个天平允许你测3次找出那个假冒的,问n可能的数值?
- 个人小项目:现有12个小球和一个天平,小球中有一个重量与其它的不同,称重几次能将这个小球找出来
- 天平砝码称重量
- 有十二个球,大小形状相同。其中一个重量与其他十一个不同,现在要求用一没有砝码的天平称三次找出那个球,并确定特殊球是轻还是重
- c语言编程 有5个砝码 分别是1,3,9,27,81 可以组合成1--121之间任意整数
- 101个硬币100真、1假,真假区别在于重量。用无砝码天平称两次给出真币重还是假币重的结论
- JAVA 有5个砝码 分别是1,3,9,27,81 可以组合成1--121之间任意整数
- 给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 将重物放到天平左侧,问在两边如何添加砝码使两边平衡。 假设N无限大,但一种重量的砝码只有一个)
- luogu1441砝码称重(深搜+背包:组合数+01背包)
- 101个硬币100真、1假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币重的结论。
- 51nod 1449 砝码称重【天平/进制】
- c语言编程 有5个砝码 分别是1,3,9,27,81 可以组合成1--121之间任意整数
- hdu 1709 求天平不能称重的重量 动态规划
- 【算法题】天平砝码称重
- 有5个砝码 分别是1,3,9,27,81 可以组合成1--121之间任意整数
- 101个硬币100真、1假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币重的结论。