砝码称重 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


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部