zoukankan      html  css  js  c++  java
  • 动态规划

    1.坐标形动态规划

    相关图形(三角形),代码在二维矩阵中,往下走,往右走。

    给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。

    如:

    [
         [2],
        [3,4],
       [6,5,7],
      [4,1,8,3]
    ]
    public static int minimumTotal(int[][] triangle)
        {
            if (triangle == null || triangle.length == 0)
            {
                //行不为0
                return -1;
            }
    
            if (triangle[0] == null || triangle[0].length == 0)
            {
                //列不为0
                return -1;
            }
    
    
            int n = triangle.length;
            int [][] f = new int[n][n];
            //初始化 起点
            f[0][0] = triangle[0][0];
            //初始化三角形的左边和右边
            for (int i = 1; i < n ;i++)
            {
                f[i][0] = f[i - 1][0] + triangle[i][0];
                f[i][i] = f[i-1][i-1] + triangle[i][i];
            }
            //自上而下初始化三角形中间重复计算的部分(筛选出最小值)
            for (int i = 1; i < n; i++)
            {
                for (int j = 1; j < i; j++)
                {
                    f[i][j] = Math.min(f[i-1][j],f[i-1][j-1])  + triangle[i][j];
                    System.out.printf("i = %d,j = %d,value = %d
    ",i,j,f[i][j]);
                }
            }
            //answer终点(求出最小值)
            int best = f[n-1][0];
            for (int i = 1; i < n; i++)
            {
                best = Math.min(best,f[n-1][i]);
            }
            return best;
    }
  • 相关阅读:
    再谈Dilworth定理
    区间动态规划
    单调队列优化动态规划
    暑假集训考试R2 konomi 慕
    NOIP 2000 计算器的改良
    2007 Simulation message
    COCI 2003 LIFTOVI 电梯 SPFA
    NOIP 2003 数字游戏
    USACO 2014 DEC Guard Mark 状态压缩
    使用HttpClient发送GET请求
  • 原文地址:https://www.cnblogs.com/huen/p/5153712.html
Copyright © 2011-2022 走看看