gpt4 book ai didi

algorithm - 从一组给定的数字中总计为给定数字的所有可能的操作组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:36 26 4
gpt4 key购买 nike

我发现很多帖子非常相似(指的是换币问题)但使用求和运算符。现在想象你可以加减乘除,有没有办法把所有的计算组合都变成一个给定的数?最好用 Java

例子:给定 1 5 2 4 9 尝试得到 16

解决方案:

  • 9+1+4+2=16
  • 2*9-(5-4+1)=16
  • 5*(4+1)-9=16
  • 等等(我找到了其中的 20 个)。

谢谢。

最佳答案

由于您只有二进制操作,您可以将任何计算建模为二叉树,其中叶子是数字,所有其他节点代表操作,例如对于你的前两个例子:

  +                  -
/ \ / \
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
  • 计算结果的树评估器

编程愉快! :-)

关于algorithm - 从一组给定的数字中总计为给定数字的所有可能的操作组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13870532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com