动态规划
来源:互联网 发布:苹果mac xshell 编辑:程序博客网 时间:2024/06/08 05:17
【题目】
个顶一个矩阵m,从左上角开始只能向右或向下走,走到右下角的位置,路径上所有数字累加起来就是路径和,返回所有路径最小的路径和
【举例】
1,3,5,9,8,1,3,4,5,0,6,1,8,8,4,0,
最小路径为:1 3 1 0 6 1 0,最小和12
【思路】:
这是一到经典的动态规划题目,比较简单
使用dp[4][4]表示到达(4,4)路径的最小值,而到达(4,4)路径有两条路
1、(3,4)->(4,4) 2、(4,3)->(4,4)
(4,4)的最小值就为 dp[3][4]+0,dp[4][3]+0,两者的最小值。
【结论】
dp[i][j]表示到达(i,j)的最小值
于是:dp[i][j] = min(dp[3][4, dp[4][3]])+(i,j)
当且: i=1时,dp[i][j]=dp[i][j-1]+buf[i][j];
j=1时,dp[i][j]=dp[i-1][j]+buf[i][j];
i=j=1;dp[1][1]=(1,1);
【代码】
#include <iostream>
#include <string>
#include <string.h>
#include <vector>
#include<iomanip>
#include <math.h>
#include <algorithm>
using namespace std;
int buf[5][5]={
0,0,0,0,0,
0,1,3,5,9,
0,8,1,3,4,
0,5,0,6,1,
0,8,8,4,0,
};
int dp[5][5]={0};
int main(int argc, char *argv[])
{
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
if(i==1&&j==1)
dp[i][j]=1;
else if(i==1)
dp[i][j]=dp[i][j-1]+buf[i][j];
else if(j==1)
dp[i][j]=dp[i-1][j]+buf[i][j];
else
dp[i][j]=min(dp[i-1][j],dp[i][j-1])+buf[i][j];
}
}
cout<<dp[5][5]<<endl;
return 0;
}
当然还可进行空间优化,我们现在使用一维数组dp[5],这自己慢慢体会。。
#include <iostream>
#include <string>
#include <string.h>
#include <vector>
#include<iomanip>
#include <math.h>
#include <algorithm>
using namespace std;
int buf[5][5]={
0,0,0,0,0,
0,1,3,5,9,
0,8,1,3,4,
0,5,0,6,1,
0,8,8,4,0,
};
int dp[5]={0};
int main(int argc, char *argv[])
{
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
if(i==1&&j==1)
dp[j]=1;
else if(i==1)
dp[j]=dp[j-1]+buf[i][j];
else if(j==1)
dp[j]=dp[j]+buf[i][j];
else
dp[j]=min(dp[j],dp[j-1])+buf[i][j];
}
}
cout<<dp[5]<<endl;
return 0;
}
0 0
- 动态规划!!!动态规划!!!
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 权限分析
- 设计模式---命令模式
- USACO-Section 3.2 Stringsobits(DP)
- C++调用JAVA方法详解
- Java反射机制:从对象获取类的所有方法信息
- 动态规划
- maven+springmvc错误 JAX-RS (REST Web Services) 2.0 can not be installed
- Atitit.研发管理---api版本号策略与版本控制
- 不使用临时变量 交换两个数
- php分配变量 smarty
- 1065. A+B and C (64bit) (20)
- php 下进行mysql参数化查询
- 深度学习的浅实践:开源软件/数据库实现表情识别(2)
- BRD MRD PRD提纲