質問は、1から20までのNサンドイッチを出した後、0から5までのさまざまな人々の飢えのレベルを表現するよう求めています。配列の残りの部分は、異なる人の飢えのレベルを表します。私の目標は、私が持っているサンドイッチを使用して配列の人々の各ペアの間の飢餓の違いを最小限に抑えることです利用可能。誰かが私のカウンターがなぜ減ったのかを説明することができます
だから私の計画では、各要素を通過して動作しますが、それは私のサンドイッチカウンターを低下しない理由を私は知らない次の要素との差分を減算することでした。
def FoodDistribution(arr)
sandwiches = arr[0]
2.upto(arr.length - 1) do |i|
arr[1] -= arr[1] - arr[2] if arr[1] > arr[2]
if arr[i] > arr[i - 1] && arr[0] > 0
arr[i] -= (arr[i] - arr[i - 1])
arr[0] -= (arr[i] - arr[i - 1])
end
end
return arr
end
を通常「最小化」の問題は、どこか意味順列、[ 'permutation'](https://ruby-doc.org/coreを伴います-2.4.0/Array.html#method-i-permutation)が有効になります。ここで 'サンドウィッチ'は定義されていますが、使用されていないことに注意してください。 – tadman