Algorithm 确定最佳资金分配的算法
所以我有一个现实世界的情况,我正试图找到一个解决方案。为了简单起见,我将稍微抽象和调整细节 我有一定数量的钱,我可以贡献给一个或多个桶。这些桶包含0个或多个其他人捐献的钱。无论每个桶里有多少钱,都会有一定的股息在所有桶中平均分配。我将收到的股息百分比是基于我在某个特定桶中的持股相对于该桶中总持股的百分比 我如何在不同的桶中找出资金的最佳配置,以最大化我的收益 例如:Algorithm 确定最佳资金分配的算法,algorithm,Algorithm,所以我有一个现实世界的情况,我正试图找到一个解决方案。为了简单起见,我将稍微抽象和调整细节 我有一定数量的钱,我可以贡献给一个或多个桶。这些桶包含0个或多个其他人捐献的钱。无论每个桶里有多少钱,都会有一定的股息在所有桶中平均分配。我将收到的股息百分比是基于我在某个特定桶中的持股相对于该桶中总持股的百分比 我如何在不同的桶中找出资金的最佳配置,以最大化我的收益 例如: 我有100美元要投资 股息总额为100美元 已经有3个桶包含以下资金。 ---A桶:100美元 ---B桶:200美元 ---C
- 我有100美元要投资
- 股息总额为100美元
- 已经有3个桶包含以下资金。 ---A桶:100美元 ---B桶:200美元 ---C组:300美元
(FWIW,这不是家庭作业或编码挑战-我正在研究的真实生活场景)从概念上讲,您希望添加到最低的存储桶,直到它匹配第二个最低的存储桶。添加到最低的2,直到它们匹配第三个。然后加上最低的3,依此类推。这意味着每一美元都将用于最佳投资 问题归根结底是要计算出你将要增加多少到这个水平,然后你将在每个水平上投入多少 假设bucket以
bucket=[400800100200]
开始,您有1100
可以投资
首先,我们按数量排序bucket=sorted[bucket]
得到[100200400800]
接下来我们来看两两的差异<代码>[200-100400-200800-400]=[100200400]。这表示我们必须将桶增加多少
现在,我们将每一对差异乘以我们在该点填充的桶数,以获得达到这些阈值的美元价值<代码>[100*1200*2400*3]=[1004001200]
下一步,我们走来走去,看看我们装了多少,用了多少钱
start with 1100
bucket 1 cost us 100, 1000 left.
buckets 1,2 cost us 400, 600 left.
buckets 1,2,3 would cost us 1200 so we divide our remaining 600 3 ways for 200 in each.
我们将200
添加到400
桶中,400
添加到200
桶中,500
添加到100
桶中。总共花费了1100英镑
现在您只需编写代码即可。:-) 这听起来像是背包问题的变种嗯。。与此无关,几周前我偶然发现了这一点。我认为这已经足够不同了,但也许我会重新考虑一下,看看它是否适用。除非我算错了,你最好把250加100,300加200,325加400,225加800。@user3386109你是对的。我只关注增加的美元的回报,而不是已经花掉的美元的损失。@user3386109老实说,我会把它扔进去