动态规划打卡第二天 ----三角形最短路径

博客探讨了使用动态规划解决寻找三角形中最短路径的问题。通过定义状态和转移方程,确定从第i行第j个元素到目标的最短路径。代码实现中,因ArrayList的get方法特性,采用二维数组存储元素以便后续操作,最终返回最后一行的最小元素。
摘要由CSDN通过智能技术生成

动态规划

1.要解决的问题:最短的路净之和(相邻节点)

2.状态:到达第i行第j个元素的最短路径是第i-1行的j-1和第i-1行的较小的值

3.转移方程:

everysum[i][j]=triangle.get(i).get(j)+Math.min(everysum[i-1][j],everysum[i-1][j-1]);

4.返回结果:最后一行的最小元素

废话不多说上代码

  public static int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {

        //从上往下走,最后累积的值存在了triangle.get(size-1).get(j)对应的数组arr[size-1][j]中
        int size=triangle.size(); //定义行
        //三角形的列随着行变换
        if(triangle.isEmpty()||size==0){
            return 0;
        }
        int [][] everysum=new int[size][size];
        everysum[0][0]=triangle.get(0).get(0);
        for(int i=1;i<size;i++){
            for(int j=0;j<=i;j++){
                //累计往下加
                if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值