package testOne;
//长度i 1 2 3 4 5 6 7 8 9 10
//价格pi 1 5 8 16 10 17 17 20 24 30
//钢条切割问题是这样的:给定一段长度为L英寸的钢条和一个价格表pi(i=1,2,...n)
//求切割钢条方案,使得销售收益利润最大
//注意,如果长度为L英寸的钢条的价格pn足够大,最优解可能就是完全不需要切割。
public class Cut {
static int[]l= {1,2,3,4,5,6,7,8,9,10};//长度
static int[]v= {1,5,8,16,10,17,17,20,24,30};//价值
static int L=10;// 总长度
static int vs[]=new int[L+1];
public static void main(String[] args) {
System.out.println(dp());
}
static int dp() {
vs[0]=0;
for(int i=1;i<=L;i++) {//拥有刚条数
for(int j=1;j<=i;j++) {//保留j整数段
vs[i]=Math.max(v[j-1]+vs[i-j], vs[i]);//?????????为啥未出现的vs[i]可以和自己比较
}
}
return vs[L];
}
}
vs[i]=Math.max(v[j-1]+vs[i-j], vs[i]);为啥未出现的vs[i](max里边的vs[i])可以和自己比较