您的位置:首页 > 其它

砝码称重 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐