1
10
我希望这不是家庭作业问题!
|
2
6
如果需要将100除以2,最大距离为N,则组合中的最小值为 如果您需要将100除以3个值,最大距离为N,这将变得更加棘手。3个值的平均值是100/3,但是如果其中一个值比这个平均值低很多,那么另一个值只能略大于这个平均值,这意味着最小值不是平均值减去最大距离除以2,而是可能的 一般来说,对于M值,这将成为
同样,我们可以计算出可能的最高值: 这将为组合的第一个值提供一个范围。 要确定第二个值的范围,必须考虑以下约束:
假设我们用10的倍数将100除以3,最大距离为30 如前所述,最小值为: 最大值为 所以对于第一个值,我们应该迭代20,30,40和50。 假设我们选20个。剩下的两个值是80。 同样,我们可以在最大距离为30的2个值上分布80,这给出:
第二个约束是,与第一个值相比,我们不希望距离大于30。这将给出最小值-10,最大值50。 现在取两个域之间的交集-->30到50,第二个值迭代30,40,50。 然后对下一个值重复此操作。
|
3
2
N-组合数 M-倍数 D-最大可能距离 所以组合中可能的值可以是M,2M,3M等等。您需要生成这个集合,然后从集合中的第一个元素开始,并尝试从同一集合中选择值来找出下两个元素(前提是它们与第一个/第二个值的距离应小于D)。 所以当i/p为3-10-30时
如果您使用递归,那么解决方案将变得更加简单。
当M=1且N足够大时,性能最差。 |
4
1
之间的距离 全部的 加性因素,或 他们中的一个?例如,对于3-10-20,[20-40-60]是有效答案吗?我假设是后者,但是可以对下面的解决方案进行非常简单的修改,以适用于前者。 无论如何,方法是从你能处理的最极端的答案开始,然后沿着答案走,直到你到达另一个最极端。
让我们试着把数字尽可能低,除了最后一个,这将是尽可能高(鉴于其他人是低)。让公约数为
我们可以解出第一个方程
现在,如果我们让一切尽可能相似:
好吧,看这里——我们有一个递归算法!我们只是走一遍,然后读出答案。
当然,我们可以走路
编辑:如果范围是每个值必须适应的范围,而不是所有
条件,你有
但这给出了相同的递归条件,只是我们传递了那些我们已经选择要放入到混合中的项的最大值和最小值,而不是对它们添加约束
|
5
0
输入: (2-10-20) (50,50)
例如:abs(50-50)<20,这样就可以了 3将第一个值增加param 2,将第二个值减少param 2
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |