10 背包

递归 注释记忆化搜索

10背包

测试用例 背包大小5

10背包

耗时

10背包

添加记忆化搜索

10背包

10背包

package main

import (
    "fmt"
    "time"
)

func findbv(remainpack int,putted map[int]bool,curv int,kv [][]int,memo map[int]int) int{
    max:=curv
    for k,v:=range kv {
        if _,ok:=memo[remainpack];ok {
            if memo[remainpack]>max {
                fmt.Println("hit")
                max=memo[remainpack]
            }
        } else
        if remainpack-v[0]>=0 && putted[k]!=true {
            putted[k]=true
            a:=findbv(remainpack-v[0],putted,curv+v[1],kv,memo)
            putted[k]=false
            if max<a {
                max=a
            }
        }
    }
    memo[remainpack]=max
    return max
}

func main() {
    kv:=[][]int{
        {1,6},{2,10},{3,12},{5,6},{7,8},{9,33},{11,560},{1,6},
        {5,6},{7,8},{9,33},{11,560},{1,6},
        {5,6},{7,8},{9,33},{11,560},{1,6},
        {5,6},{7,8},{9,33},{11,560},{1,6},
        {5,6},{7,8},{9,33},{11,560},{1,6},
        {5,6},{7,8},{9,33},{11,560},{1,6},
        {5,6},{7,8},{9,33},{11,560},{1,6},
    }
    //kv=[][]int{
    //  {1,6},{2,10},{3,12},{5,23},
    //}
    start := time.Now()
    r:=findbv(13,make(map[int]bool),0,kv,make(map[int]int))
    //some func or operation
    cost := time.Since(start)
    fmt.Printf("cost=[%s]",cost)
    fmt.Println(r)
}
example :[w,v] [1,6] [2,10] [3,12]    pack: 5

greedy algorithm 近似最优

put bigger v/w into pack first until overflow

recusive + memorization   

findBiggestV(remainPack , putted,currV)

iterate all remainkvpair
    if memo[remainpack]
        return memo[remainpack]
    if remainpack-k>=0 && !putted
        putted[k]=true
        tmpc = currV+v
        currV = max(findBiggest(remainPack-k,tmpc) ,currV)

memo[remainpack]=currv
return currV

dynamic programming
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!