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

    有一个矩阵map,它每个格子有一个权值。从左上角的格子开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。 给定一个矩阵map及它的行数n和列数m

    #include <algorithm>
    #include <iostream>
    using namespace std;
    
    #include <vector>
    
    int MinimumPath(int n, int m){
    
        vector<vector<int>> a(n, vector<int>(m));
        vector<vector<int>> b(n+1, vector<int>(m+1));
    //初始化各个位置的值
        for (int i = 0; i < n; i++){
            for (int j = 0; j < m; j++){
    
                if (i == 0 && j == 0){
                    a[i][j] = 1;
                }
                else if (j == 0){
                    a[i][j] = a[i - 1][m - 1] + 1;
                }
                else{
                    a[i][j] = a[i][j-1] + 1;
                }
                cout << a[i][j] << "   ";
            }
            cout << endl;
        }
    
    // 每一个位置的值 都等于它前一个位置+要到达的位置。
        for (int i = 0; i < n; i++){
            for (int j = 0; j < m; j++){
                if (i == 0 && j == 0){
                    b[i+1][j+1] = a[i][j];
                }
                else{
                    b[i+1][j+1] = min(b[i + 1][j] + a[i][j], b[i][j + 1] + a[i][j]);
                }
    
            }
        }
        return b[n][m];
    }
    
    int main(void)
    {
        cout << MinimumPath(10, 10) << endl;;
    
    }

     

  • 相关阅读:
    函数对象中的prototype属性
    undefined和null的区别
    访问修饰符
    继承
    静态成员和实例成员的区别
    js模拟Trim()方法
    连接池的执行原理
    Javascript中的= =(等于)与= = =(全等于)区别
    数据库中创建约束
    KM算法入门
  • 原文地址:https://www.cnblogs.com/yuguangyuan/p/5841704.html
Copyright © 2011-2022 走看看