Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择具有最大和的有理数_Java_Math_Sum_Rational Numbers - Fatal编程技术网

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

Java 选择具有最大和的有理数,java,math,sum,rational-numbers,Java,Math,Sum,Rational Numbers,我有n个有理数。从中我必须选择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+

我有n个有理数。从中我必须选择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。 什么是战略

输入中的数字不必是有理数。e、 g数字可以是4/6,但不一定是2/3

编辑: 强力解决方案是通过从n中选择m个数字来尝试所有置换。然后应用上面的公式找出结果,然后看看哪种组合能得到最大的结果

因此,我想知道是否有任何数学公式、属性或比暴力方式更聪明的方式。

我会尝试一下

因为我们想最大化分子和除以分母,我们应该选择分子和分母之间的差值最大的数字。这将确保为
m
数字的最小分母和选择最大分子和,这将为我们提供所需分数的最大值

例如

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

如果有一个平局,我们可以简单地选择分子和分母数值较大的分数,因为这会增加比率

例如

nums - 1/1, 1/2, 2/4
diff - 0  , -1 , -2
max is 2/3 using 1/1 and 1/2
nums - 1/1, 1/2, 2/4, 2/3
diff - 0  , -1 , -2 , -1
max is 3/4 using 1/1 and 2/3

希望它有意义。

请发布一篇文章,并突出显示您遇到的问题。@trashgood我想写一个程序。所以我需要逻辑/数学属性。我认为这是一个相当不错的竞争性编程问题,我花了几分钟时间认真思考。但它可能会出现在cs.stackexchange.com上。我认为不允许讨论正在进行的竞赛的问题:这似乎是逻辑。我将尝试更多的测试用例并很快接受答案。在这个测试用例中失败:
1/1,1/5,50/100
,我们需要选择两个数字,然后您的方法将选择数字:
1/1,1/5
,这将给出答案
2/6
,但正确的答案可以通过选择
1/1,50/100
给出答案的数字
51/101