**简单整理动态规划**

动态规划
本人利用博客主要还是为了更好整理当前我所看过的知识,俗话说:好记性不如烂笔头,

   *****************只有尝试失败才能看清自己与世界*****************

此次是有关动态规划的一些简单整理:
废话不多说,开始主题内容:

动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不像搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。
动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。因此读者在学习时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解。我们也可以通过对若干有代表性的问题的动态规划算法进行分析、讨论,逐渐学会并掌握这一设计方法。(讲的挺深刻,脑壳痛!!!
而且动态规划的种类也有好几种,本人能力实在有限,只会最简单的了。

相信大家最反感的就是了解一种东西但偏偏又要看定义,这时,我们可以通过简单的例子来 走访一遍 所谓的 “动态规划” !

这里有一个简单的例子可以来帮助我们理解:

1. 最短路径距离问题
Problem :周末,小明同学想要去小红的同学的家里玩,但由于他是第一次来,对城市路线及距离还不熟悉,所以他去当地商店买了一张市区小地图,同时他对地图中的路线点及距离进行了简单的整理,制作成了一个n * n 矩阵
1 2 3 4
1 1 3 5
5 0 2 3
3 3 4 0

假设小明的家是左上角,小红的家是右下角(上图矩阵只是一个例子)先小明求助于你,你能帮小明找到最短的路径长度吗(题目规定小明只能向下和向右走,矩阵的数字代表这个路线的距离
INPUT
输入分两组,第一组占一行,是一个数n,代表这个行列相等矩阵的行数
第二组是这个n阶方阵;
OUTPUT
假设一定存在最短路径,输出这个最短路径的长度
Sample Input
4
1 2 3 4
1 1 3 5
5 0 2 3
3 3 4 0
Sample Output
8

分析: 思路就是我们要遍历整个矩阵的数字,找出最短的一条路线到达终点。假如我们到达了(i,j)处,那么(i,j)这个位置应该是由(i-1,j)或者(i,j-1)变化而来的,以此向前推,挑出最短的那个距离加起来,然后一直遍历,直到遍历完成(本人不适合讲内容,还是看代码吧

在这里插入代码片
//*******2020.2.3**************////
//*****************************//
//*******ysj*******动态规划****//

//#include<bits/stdc++.h>
#include<iostream>
#include<math.h>
const int SIZE = 3e3+5;
//const int inf = 0x7fffffff;
using namespace std;

int dp[SIZE][SIZE] = { 0 }; //创建动态规划决策表并初始化 
int a[SIZE][SIZE];

int main()
{
	int n,i,j;
	cin>>n;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			cin>>a[i][j];
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(i==1&&j==1)
			{
				dp[i][j]=a[i][j];
			}
			else if(i==1&&j!=1)
			{
				dp[i][j]=a[i][j]+dp[i][j-1];
			}
			else if(i!=1&&j==1)
			{
				dp[i][j]=a[i][j]+dp[i-1][j];
			}    //以上三个判断条件都是边界值定义,这是要注意的地方 
			else
			{
				dp[i][j]=a[i][j]+min( dp[i-1][j], dp[i][j-1] );  //从前向后一步遍历,找出两个距离最小的那个 
			}
		}
	}
	cout<<dp[n][n]<<endl;
	
	return 0;
} 

实在不理解我们可以将例子中的动态规划决策表画出来

在这里插入图片描述
看右下角(4,4)是不是就是8了,至于是怎么实现的好好琢磨一下,最好自己能动手画个表就更好了!!!!
时间问题就找到了这一个例题,欢迎大佬来指教小弟
qq一⑦一二零四85三3,十分期待!!!

发布了6 篇原创文章 · 获赞 6 · 访问量 473

猜你喜欢

转载自blog.csdn.net/YSJ367635984/article/details/104158523