选择具有最大总和的有理数

时间:2017-04-16 05:16:27

标签: java math sum rational-numbers

我有理智的数字。除此之外,我必须选择m个数字

sum of numerators of m numbers /sum denominators of m numbers is maximum. 

e.g。如果我有3个数字,1 / 1,1 / 2,2 / 4,我必须选择2个数字。然后组合

If 1/1, 1/2  are used then 1+1/1+2 = 2/3
If 1/1, 2/4 are used then  1+2/1+4=3/5
If 1/2, 2/4 are used then  1+2/2+4=3/6=1/2

Maximum is 2/3

假设我有n个整数的数组,指定分子,以及其他n个整数的分母。数m。 战略是什么?

输入中的数字不需要减少有理数。例如,数字可以是4/6而不一定是2/3。

修改 通过从n中选择m个数,蛮力解决方案将尝试所有排列。然后应用上面的公式来查找结果,然后看看哪个组合给出了最大的结果。

所以我想知道是否有任何数学公式或属性或者比蛮力方式更聪明的方法。

1 个答案:

答案 0 :(得分:1)

我会去看看。

由于我们想要最大化分子之和除以分母,我们应该选择分子和分母之间的差异最大的那些数字。这将确保为@Override public void addResourceHandlers(final ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); } 个数的分母的最小和选择分子的最大和,这将给出我们所需分数的最大值。

对于前,

m

因此,nums - 1/1, 1/2, 2/4 diff - 0 , -1 , -2 max is 2/3 using 1/1 and 1/2 1/1会为我们提供最大值。

如果存在平局,我们可以简单地选择具有数字上更大的分子和分母的分数,因为这会增加比率。

对于前,

1/2

希望它有意义。