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;
    }
  • 相关阅读:
    Matlab 画图
    OfferCome-0531
    OfferCome--0528
    剑指offer(2)
    剑指offer(1)
    MySQL的自增主键
    java Junit 测试
    sql 注入问题
    Facebook Libra
    markdown的博客
  • 原文地址:https://www.cnblogs.com/huen/p/5153712.html
Copyright © 2011-2022 走看看