5个砝码的java代码,砝码称重 5个砝码 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。...

/*砝码称重

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部