动态规划之矩阵的最小路径和
来源:互联网 发布:hp打印机端口是多少 编辑:程序博客网 时间:2024/04/28 02:11
1、给定一个矩阵m,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有路径中最小的路径和,假设矩阵大小为M*N
解析:这是一道经典的动态规划的题目。m[i][j]代表输入矩阵某一点的路径长度,dp[i][j]代表到(i,j)点的最短路径长度,dp[i][j]=min(dp[i-1][j],dp[i][j-1])+m[i][j].
#include<iostream>#include<vector>using namespace std;int min(int v1, int v2);int main() {int i = 0, j = 0;int M = 0, N = 0;/*给二维vector赋值*/cin >> M >> N;vector<vector<int>> m(M,vector<int>(N));vector<vector<int>>dp(M,vector<int>(N));vector<int> mm(N);/*使用数组方式赋值*///for (i = 0; i < M; i++) {//for (j = 0; j < N; j++) {//cin >> m[i][j];//}//}/*使用迭代器方式赋值*/for (auto it_vv = m.begin(); it_vv != m.end(); ++it_vv) {for (auto it_v = it_vv->begin(); it_v != it_vv->end(); it_v++) { //迭代器的使用方法和指针类似cin >> *it_v;}}dp[0][0] = m[0][0];for (i = 1; i < M; i++) {dp[i][0] = m[i - 1][0] + m[i][0];}for (j = 1; j < N; j++) {dp[0][j] = dp[0][j - 1] + m[0][j];}for (i = 1; i < M; i++) {for (j = 1; j < N; j++) {dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + m[i][j];}}cout << "the minimum path is : " << dp[M - 1][N - 1] << endl;}int min(int v1, int v2) {if (v1 > v2) return v2;else return v1;}
阅读全文
0 0
- 动态规划之矩阵的最小路径和
- 动态规划--矩阵最小的路径和
- 动态规划,矩阵最小路径和
- 动态规划--矩阵最小路径和
- 动态规划-----矩阵最小路径和
- 递归+动态规划 矩阵最小路径和
- 递归与动态规划---矩阵的最小路径和
- 动态规划(三)暴力递归的优化之路——数字矩阵的最小路径和
- 动态规划3:矩阵最小路径和问题
- 动态规划——矩阵最小路径和
- 动态规划6:台阶问题和矩阵最小路径问题
- 动态规划---三角矩阵最小路径
- 动态规划求解矩阵累计和最大的路径
- 动态规划之矩阵路径问题
- 动态规划之最大矩阵路径
- java动态规划最小路径和
- Lintcode-动态规划-最小路径和
- 矩阵的最小路径和
- vb.net 教程 8-1 简单数据绑定 1
- 我的电路实践
- ACT插件之字幕报警
- 2-4子序列的和(subsequence)
- el 表达式${param.属性}
- 动态规划之矩阵的最小路径和
- 优化建模
- 浅谈C++中const的引用
- reids学习---上
- lnmp
- php实现简易的搜索功能
- 常用布局效果08-表单布局
- 双层神经网络与逻辑回归正反向传播数学公式简要推导
- spring注解入门之IOC,DI