object BeiBao_huishuo extends App{
val num = 5
val volumn = 100
val thing = Array((92,77),(22,22),(87,29),(46,50),(90,99)) //(价值,重量)
// val volumn = 10
// val thing = Array((6,2),(3,2),(5,6),(4,5),(6,4)) //(价值,重量)
var maxvalue = 0
// def find(n:Int,nowvalue:Int,nowvolumn:Int){
// if(n == 0 && nowvolumn >= 0){
// if(nowvalue > maxvalue) maxvalue = nowvalue
// return
// }
// if(nowvolumn < 0) return
// for(i <- 0.until(2)){
// if(i == 0) find(n-1,nowvalue,nowvolumn)
// else{
// find(n-1,nowvalue+thing(n-1)._1,nowvolumn-thing(n-1)._2)
// }
// }
// }
def find(n:Int,nowvalue:Int,nowvolumn:Int){ //去除return
if(n == 0 && nowvolumn >= 0 ){
if(nowvalue > maxvalue) maxvalue = nowvalue
}
else if(nowvolumn >= 0){
for(i <- 0.until(2)){
if(i == 0) find(n-1,nowvalue,nowvolumn)
else{
find(n-1,nowvalue+thing(n-1)._1,nowvolumn-thing(n-1)._2)
}
}
}
}
find(num,0,volumn)
println(maxvalue)
}
scala 回溯法解决0-1背包问题
原文作者:回溯法
原文地址: https://blog.csdn.net/o1101574955/article/details/52561498
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/o1101574955/article/details/52561498
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。