动态规划2

Posted 于光远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划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;;

}

 

 

以上是关于动态规划2的主要内容,如果未能解决你的问题,请参考以下文章

应对笔试手写代码,如何准备动态规划?

应对笔试手写代码,如何准备动态规划?

应对笔试手写代码,如何准备动态规划?

算法动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )

算法动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )

动态规划-第二节:动态规划之背包类型问题