我正在學(xué)習(xí)麻省理工學(xué)院計算思維和數(shù)據(jù)科學(xué)導(dǎo)論課程第 2課講座 PDF,我正在嘗試將以下樹搜索算法 python 代碼翻譯成 Golang。主要問題是python代碼使用了一個元組。def maxVal(toConsider, avail): """Assumes toConsider a list of items, avail a weight Returns a tuple of the total value of a solution to the 0/1 knapsack problem and the items of that solution""" if toConsider == [] or avail == 0: result = (0, ()) elif toConsider[0].getCost() > avail: #Explore right branch only result = maxVal(toConsider[1:], avail) else: nextItem = toConsider[0] #Explore left branch withVal, withToTake = maxVal(toConsider[1:], avail - nextItem.getCost()) withVal += nextItem.getValue() #Explore right branch withoutVal, withoutToTake = maxVal(toConsider[1:], avail) #Choose better branch if withVal > withoutVal: result = (withVal, withToTake + (nextItem,)) else: result = (withoutVal, withoutToTake) return resultdef testMaxVal(foods, maxUnits, printItems = True): print('Use search tree to allocate', maxUnits, 'calories') val, taken = maxVal(foods, maxUnits) print('Total value of items taken =', val) if printItems: for item in taken: print(' ', item)我知道 Go 沒有元組,我四處尋找解決方法。我嘗試了這個解決方案但沒有運氣:type Food struct { name string value int calories int}type Pair struct{ //found this work around on another stack overflow question but I think I incorrectly implemented it a,b interface{}}
1 回答

UYOU
TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊
Go 沒有元組,但它可以返回多個值:
func maxval(toConsider []Food, avail int) (int,[]Food) {
if len(toConsider)==0 || avail == 0) { // len(toConsider)==0 will work even if toConsider is nil
return 0,nil
}
...
}
- 1 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消