我发现很多帖子非常相似(指的是硬币更改问题),但仅使用sum运算符。 现在想象你可以加,减,乘和除,有没有办法让所有的计算组合到给定的数字?理想情况下在Java中
实施例: 鉴于1 5 2 4 9试图得到16
解决方案:
感谢。
答案 0 :(得分:3)
由于您只有二进制操作,因此您可以将任何计算建模为二叉树,其中叶子是数字而所有其他节点都表示操作,例如前两个例子:
+ -
/ \ / \
9 + * +
/ \ /| / \
1 + 2 9 - 1
/ \ / \
4 2 5 4
因此,您的算法需要以下部分:
N O O O ...
/ \ / \ / \
N N O N N O
/ \ / \
N N N N
O : + + ... - ...
/ \ / \ / \ / \
N N 1 5 1 2 1 5
快乐的节目! : - )