动态规划初步
在这周算法题公布之前,我对动态规划的了解是只停留在表面的,只知道一个名词而已。
而这次的算法题,让我对动态规划有了一个初步的了解
我在做题的过程中,总结出了动态规划我认为比较重要的几个点
1.大问题化小问题:即问题是可以化为子问题的
2.记忆性,下一步会用到上一步的结果,所以这个结果必须是可记忆的,是层层递进的
3.状态的转移:状态转移方程是一个关键点(埋坑)
HDU 2084
#include<stdio.h>
int dp[100][100];
int main(int argc, char const *argv[]) {
int num,line;
int i,j;
scanf("%d",&num);
while(num--)
{
scanf("%d",&line);
for(i=0;i<line;i++)
for(j=0;j<=i;j++)
{
scanf("%d",&dp[i][j]);
}
for(i=line-2;i>=0;i--)
for(j=0;j<=i;j++)
dp[i][j]=(dp[i][j]+dp[i+1][j])>(dp[i][j]+dp[i+1][j+1])?(dp[i][j]+dp[i+1][j]):(dp[i][j]+dp[i+1][j+1]); //核心
printf("%d\n",dp[0][0]);
}
return 0;
}
//此处埋坑,后期填充图片加讲解