zoukankan      html  css  js  c++  java
  • 最小路径和

    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    int mapx[3][5]=
    {
        1,2,3,4,5,
        6,7,8,9,1,
        2,3,4,5,6
    };
    
    int dp[3][5]={0};
    
    int main()
    {
        dp[0][0] = mapx[0][0];
        for(int i=1;i<5;i++)
        {
            dp[0][i] = dp[0][i-1] + mapx[0][i];
        }
        for(int i=1;i<3;i++)
        {
            dp[i][0] = dp[i-1][0] + mapx[i][0];
        }
        for(int i=1;i<3;i++)
        {
            for(int j=1;j<5;j++)
            {
                dp[i][j] = min(dp[i-1][j],dp[i][j-1]) + mapx[i][j];
            }
        }
        cout<<dp[2][4]<<endl;
        return 0;
    }

    设置数组dp[i][j]用于表示从mapx[0][0]点到mapx[i][j]点的最短路径和;

    考虑边界问题,既是两个边,要根据实际情况设置。比如这里的两个边dp[i][0],dp[0][j]分别表示从mapx[0][0]点到mapx[i][0]和mapx[0][i]的最短路径和,那么也就是沿着两条边线不断累加;

    剩下的就是每走一部就比较下,向下走和向右走的哪一个划算,然后取哪一个;

    最后,最右下角的值就是待求的最小路径和!

  • 相关阅读:
    poj 2262
    poj 1050
    poj 1730
    poj 1061
    【设计模式】简单工厂模式学习
    【待学】
    [设计模式]策略模式和单一职责
    Windows live writer 误删 草稿 恢复
    [Linq]Linq To Sql (2)
    MVC 学习日志1(上)
  • 原文地址:https://www.cnblogs.com/achao123456/p/9660927.html
Copyright © 2011-2022 走看看