【发布时间】:2021-02-04 12:55:47
【问题描述】:
假设有 10 个小偷和 100 个金币要分配,分配模式是这样的:
Thief 1 gets 1 coin.
Thief 2 gets 2 coins.
Thief 3 gets 3 coins.... and so on upto 10.
当所有小偷都收到硬币后,总硬币将是(1+2+3+... = 55 coins)。现在剩下的硬币是 45。现在,我怎样才能从小偷开始重新分配,但使用最后一个递增的值,而不是再次从 1 个硬币开始?就像第二轮中的第一个小偷应该得到 11 个硬币而不是 1 个,这应该一直持续到所有硬币都分配完并且剩下的硬币为 0。如果最后一个小偷必须得到 7 个硬币但可用的硬币是 3,那么他应该得到 3 个硬币并且分发应该结束了。
我试过这个...
$thieves = 10;
$goldCoins = 100;
$thiefArr = range(1, $thieves);
$assgnCoins = 0;
foreach($thiefArr as $key => $value){
for($i=1; $i<=$goldCoins; $i++){
$assgnCoins = $value; // This assigns first round of coins but how to redistribute it again I have no idea.
}
echo "Thief ".$value." will have ".$assgnCoins." gold coins. <br><br>";
}
【问题讨论】:
-
您好,欢迎您。您正在编写php代码,请不要标记不相关的语言和概念。
-
@FedericoklezCulloca 哦,我很抱歉 :)
-
请在逻辑上投入更多时间以及为什么这不起作用。此示例中的一个重要错误是 for 循环运行了 100 次而没有更改任何内容。执行语句 $assgnCoins = 1; 100 次...如果您不确定脚本的作用,请在脚本中添加一些额外的回声:例如在assigncoins= line : __ echo $i." ".$value ."
";__ 之后你会看到问题。
标签: php loops for-loop foreach