我試圖用testArray中的數字找到所有可能的總和。我把陣列分配給一個哈希,它使用sum作為鍵,并存盤testArray中加起來等于總和的整數。
testArray=[1, 2, 3, 4]
@possibleSums=Hash.new {|h,k| h[k] = [] }
for j in 0.testArray.size-1
tmpSum=0。
output=""
@sumArray=[] 。
for k in j...testArray.size-1
tmpSum=tmpSum testArray[k]
output=output " "/span> testArray[k].to_s
@sumArray.push(testArray[k])
@possibleSums[tmpSum]=@sumArray。
p output "="/span> tmpSum.to_s
end
end>
問題是,我注意到,當@sumArray在回圈的每個迭代中發生變化時,之前記錄的哈希鍵值也會發生變化。 我做錯了什么?
舉例:
output: " 1=1"/span>
@sumArray: [1]
@possibleSums: {1=> [1] }
output: " 1 2=3"/span>
@sumArray: [1, 2]
@possibleSums: {1=>[1, 2], 3=> [1, 2] }
output: " 1 2 3=6"/span>
@sumArray: [1, 2, 3]
@possibleSums: {1=>[1, 2, 3], 3=> [1, 2, 3], 6=> [1, 2, 3] }
你可以看到,鍵1和鍵3的值隨著@sumArray不斷變化
。uj5u.com熱心網友回復:
你把對@sumArray的參考放在哈希中。- 紅臉蛋 Sep 12 at 17:48
red_menace是對的 ... 你可以用@possibleSums[tmpSum][email protected] 來代替
。轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/307608.html
標籤:
