IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> python 递归解01背包问题 -> 正文阅读

[游戏开发]python 递归解01背包问题

决策过程如下

  1. 每次考虑一个背包是否放下,从第一个到最后一个
  2. 比较放这个和后面的,不放这个和后面的效益哪个高

决策树

代码

class Jilu(float):
    # 实现float型与list合并在一起,所有float方法都可用
    def __new__(cls,value,jilu):
        o=super(Jilu,cls).__new__(cls,value)
        if type(jilu) is not list:
            o.jilu=[jilu]
        else:
            o.jilu=jilu
        return o
    def __add__(self,jl):
        a=self.__float__()+jl
        if type(self)==type(jl):
            tp=self.jilu=self.jilu+jl.jilu
        else:
            tp=self.jilu
        return self.__new__(Jilu,a,self.jilu)
    def __str__(self):
        t1=self.__float__()
        t2=self.jilu
        return "value:{0},jilu:{1}".format(t1,t2)

class jc():
    # 决策
    def __init__(self,bb:list):
        # self.bb=sorted(bb,key=lambda x:x.weight,reverse=1)
        self.bb=bb
    def dg(self,n=0,wt=0):
        # 当前考虑的 剩余质量
        # 放入或者不放入
        # 假设只剩下背包,看能不能放下
        # 决策过程
        # 比较放这个和后面的,不放这个和后面的效益哪个高
        if n>=self.bb.__len__():
            return Jilu(0,'')
        # 返回的要为value
        if wt<self.bb[n][0]:#放不下
            t1=-1
            t2=self.dg(n+1,wt)#不放这个
            pass
        if wt>=self.bb[n][0]:#能放下
            t1=Jilu(self.bb[n][1],str(n))+self.dg(n+1,wt-self.bb[n][0])#放下这个
            t2=self.dg(n+1,wt)#不放这个
            pass
        return max(t1,t2)


bb=[(2,2),(2.5,3),(4,5),(5,8),(1,2),(3,4),(3,4)]
#背包的记录 第一个数是质量,第二个是价值
a=jc(bb)
print(a.dg(wt=10))

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:34:32  更:2021-09-13 09:36:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:46:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码