动态规划的入门案例

动态规划使用条件:原始最优解问题可以基于子问题的最优解求的,而且子问题被重复递归求解。

 特点:

    1 :具有最优子结构 

    2:  重叠子问题求解

钢条割据案例:

代码参考:

package com.ljh;

public class DongTai001 {

    //钢条割据问题
    public static void main(String args[]){
        int [] p = {1,5,8,9};
        System.out.println(buttom_up_cut(p));
    }
    //p[]表示钢条价格表
    private static int buttom_up_cut(int []p){

        int remenber[] = new int[p.length+1];
        //加一是因为p[]的下标是从0到n-1,而remenber[]的下标是从1-n存储对应的钢条最优价格的表

        for(int i = 1;i <= p.length;i++){

            int q = -1;
            i代表当前的钢锯条的长度,此循环求解i长度的钢锯的最优价格的值,然后存入下标为为i的remenber[i]
            for(int j = 1; j<=i;j++){
                //表示当前分割方式下,第一段的价格+剩余长度的最优价格=此种分割方式的最高价格
                q = Math.max(q,p[j-1]+remenber[i-j]);

            }
            remenber[i] = q;//保存当前长度的最优解
        }

        return remenber[p.length];//返回最后的求解结果
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值