标签:数组 lin 表达式 方法 决策 个数 初始化 idea rod
动态规划是运筹学中用于求解决策过程中的最优化数学方法。作为算法设计技术,是一种使用多阶段决策过程最优的通用方法。是解决最优化问题的重要工具。
1)问题是由交叠的子问题所构成,大问题分解为小问题。
2)将交叠子问题的一次次求解\(\rightarrow\)子问题只求解一次,并将结果记录保存。
3)利用空间(子问题存储)来换取时间
多阶段决策问题
初始状态\(\rightarrow\)决策1\(\rightarrow\) 决策2 \(\rightarrow\)........\(\rightarrow\)决策n\(\rightarrow\)结束状态
动态规划三要素:
Tips :
可以列一个二维的表格,通过表格中元素进行规划。
先从最简单的剪绳子(integer break product maximun)问题
int maxProductLength(int length){
// 先进行判断
if(length<2) return 0;
if(length==2) return 1;
if(length==3) return 2;
// 定义一个数组,存储各个值
// 交叠的子问题 的初始化
int* product=new int[length+1];
product[0]=0;
product[1]=1;
product[2]=2;
product[3]=3;
// 定义一个储存最大值的变量
int max=0;
for(int i=4;i<length;++i){
max=0;
for(int j=1;j<=i/2;++j){
// 递推的表达式
int product=product[i]*product[i-j];
if(product>max)
max=product;
}
product[i]=max;
}
max=product[length];
delete[] product;
return max;
}
标签:数组 lin 表达式 方法 决策 个数 初始化 idea rod
原文地址:https://www.cnblogs.com/GeekDanny/p/10114076.html