【发布时间】:2018-09-26 07:35:37
【问题描述】:
给定一个 N 个整数列表的输入,总是从 1 开始,例如:1、4、2、3、5。还有一些目标整数 T。
按顺序处理列表,算法决定是否将数字与当前分数相加或相乘,以达到最大可能输出 例如:[输入] 1, 4, 2, 3, 5 T=40 但是 我无法在算法中对此进行概念化——我只是在寻找有关如何考虑它的建议或最多是伪代码。我将如何进行编码? 我的第一直觉是将 +/* 视为 1/0,然后测试排列,例如 0000(我认为长度 == N-1),然后是 0001,然后是 0011,然后是 0111,然后是 1111,然后是 1000,等等。 但是我不知道如何将它放入伪代码中,给定一个通用的 N 个整数。任何帮助将不胜感激。1 + 4 = 5
5 * 2 = 10
10 * 3 = 30
30 + 5 = 35 which is < 40, so valid.
1 * 4 = 4
4 * 2 = 8
8 * 3 = 24
24 * 5 = 120 which is > 40, so invalid.
【问题讨论】:
-
修剪的“蛮力”方法就可以了。可以使用动态编程进行有效的实现
-
看来你不知道如何用二进制打印从 0 到 2^N-1 的数字。
-
整数是正数吗?没有此信息无法解决问题。
-
标题误导。它应该像“寻找最接近的可能的正整数顺序和/积组合”
-
@Rerito 这里不需要应用动态规划。它是一棵二叉树。通常的 bracnh 和绑定 >= T 就足够了。
标签: algorithm