动态规划之钢条切割问题:自顶向下(Python实现)
时间:2022-07-22
本文章向大家介绍动态规划之钢条切割问题:自顶向下(Python实现),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#
#钢条切割问题:自顶向下(由大到小)
#
#自顶向下递归实现
# def CUT_ROD(p,n):
# if n==0:
# return 0;
# q = -1000
# for i in range(1,n):
# q = max(q,p[i]+CUT_ROD(p,n-i))
# return q
#获得最大值
def max(a,b):
maxData = a;
if maxData < b:
maxData = b;
return maxData
# 备忘机制的CUT-ROD
def MEMOIZED_CUT_ROD_AUX(p, n, r):
# print("p=",p)
# print("n=",n)
# print("r=",r)
n = n - 1
if r[n] >= 0:
return r[n]
if n == 0:
q = 0
else:
q = -9999
for i in range(1, n):
# print(int(p[i]))
q = max(q, int(p[i]) + int(MEMOIZED_CUT_ROD_AUX(p,n-i,r)))
r[n] = q
return q
def MEMOIZED_CUT_ROD(p,n):
r = {}
for i in range(0,n):
r[i] = -9999
return MEMOIZED_CUT_ROD_AUX(p,n,r)
if __name__ == '__main__':
p = [1,5,8,9,10,17,17,20,24,30]
#长度 i 0 1 2 3 4 5 6 7 8 9 10
#价格 pi 0 1 5 8 9 10 17 17 20 24 30
n = 20
print("最大的收益:",MEMOIZED_CUT_ROD(p,10))
- linux下 Error running javac compiler
- 讨厌算法的程序员 1 - 插入排序
- Linux下使用ssh密钥实现无交互备份
- [编程经验] Python中的continue和break语句
- 洛谷 P3386 【模板】二分图匹配 Dinic版
- [编程经验] 拉勾网爬虫数据的后续处理
- Linux下使用rsync实现文件备份
- 【干货】基于TensorFlow卷积神经网络的短期股票预测
- [编程经验] 基于bs4的拉勾网AI相关工作爬虫实现
- [编程经验] 链家23个全国主要城市的现房数据分析
- [编程经验] Python中的modlue和packages的区别
- Day5上午解题报告
- [编程经验] Pandas中比较好用的几个方法
- [编程经验] Elasticsearch 初识
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一款功能简约到可怜的SQL 客户端
- Kotlin---data class
- sqlmap的使用方法
- 从0开始做播放器---音频播放有杂音且音调异常
- 线上故障实录-一大早服务就不可用了?
- mapboxGL中popup遮挡的优化
- SQL注入的基本步骤
- JS 变量作用域导致的一个坑
- 池化技术到达有多牛?看了线程和线程池的对比吓我一跳!
- Nginx 跨域 add_header 403状态下无效
- Cannot set property 'branchdata' of undefined
- 【每日一题】27. Remove Element
- 【CPP】《程序员面试金典》习题(1)——数组与字符串
- 【CPP】《程序员面试金典》习题(2)——链表
- 【CPP】《程序员面试金典》习题(3)——栈和队列