问题
给定一个数组[3 3 8 8],和一个数k,k = 24, 可以使用加减乘除和括号,问如何使用前四个数计算才可以得到24?
手动解法思路
在被提到这个问题的时候一瞬间是懵的,但是也很兴奋,很快就可以判断出只使用加减是不能成功的,所以肯定会使用到乘除。
下面就是凑的过程,既然有乘除,那么选定一个数8,只需要凑一个3出来与之相乘即可。发现另外3个数不能凑成3,换个思路,凑成1/3也行,那么必须要有一个以3为底分数,只能是8/3,判断出(3-(8/3))=1/3。
程序实现思路
想了想,用dfs遍历所有情况应该可以实现。
还有一种思路,就是用递归,每次把给定值和数组范围缩小,但是返回条件和递归次数不太好想,特此记录一下,有空回来解决
诚邀解题
- 本题的终极形态应该是任意数组,和任意数k,返回满足条件的等式,若有大神可以用代码实现,请私信本菜狗,不胜感激。