5个砝码
用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。
本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
例如:
用户输入:
5
程序输出:
9-3-1
用户输入:
19
程序输出:
27-9+1
要求程序输出的组合总是大数在前小数在后。
用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。
本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
例如:
用户输入:
5
程序输出:
9-3-1
用户输入:
19
程序输出:
27-9+1
要求程序输出的组合总是大数在前小数在后。
可以假设用户的输入的数字符合范围1~121。
对于每一个数,它有三种符号,-1,0,1,确定了每个数的符号,我们只要将这些数相加就可以得到一个和,将这个和与输入的数据相比较看是否相等。知道了这个大体思路,可能有些同学已经想到通过5个for循环暴力出来,但是作为一名程序设计者+强迫症患者,我无法忍受这么大一坨循环出现在我的代码之中,所以,当然还是用递归代替之。我们先设置一个符号位数组sign[],在递归的过程中,依次确定sign[0]到sign[4]的值(-1,0,1),当递归到第6层的时候,可以知道,sign[]中所有的值都已经被确定,然后我们就可以用这个符号位来求和,最后输出就可以了。