0

在我的代码中,我有一组项目,总计 100 个。即每个组中有一个项目总数,所有组的总数为 100。

现在,如果用户决定更改其中一个计数,我希望所有其他计数都进行缩放,以便它们彼此之间的比例仍然相同,但总计数仍然是 100。

即,如果我们从

[20, 30, 50]

你把 50 改成 75 那么你最终会得到

[10, 15, 75]

所以我需要一个函数,它接受索引参数和新值并调整数组中的值以平衡它们。

伪代码将是惊人的!Java 更是如此!

4

1 回答 1

0

您可以简单地将非用户更改数字的数字相加,获取它们与该数字的比率,并确保当您尝试增加或减少数字时比率不会改变。

例如

  • 说:a + b + c + d = 100
  • 并假设用户将 deltaA 添加到 a,

然后

int newB = (int) (b * ((double)b + c + d - deltaA) / (b + c + d)) 

其他人也一样:

int newC = (int) (c * ((double)b + c + d - deltaA) / (b + c + d)) 
int newD = (int) (d * ((double)b + c + d - deltaA) / (b + c + d)) 

请注意,这与 Java无关,实际上与编程无关,而只是最基本的代数。另请注意,由于四舍五入的挑战,此解决方案可能大于或小于 100 乘以 1 或 2。你将不得不对此做一些捏造。

于 2013-02-17T03:16:56.733 回答