简单DP
/*
* tyvj-1195
* mikew
* 2012-9-29
* simple DP
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXN 111
int a[MAXN], b[MAXN], c[MAXN];
int opt[MAXN][2]; /* 0: chopsticks; 1: spoon */
int n;
int min(int e1, int e2)
{
return e1<e2?e1:e2;
}
int main(void)
{
int i;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d%d%d", a+i, b+i, c+i);
opt[0][0]=b[0];
opt[0][1]=c[0]+a[0];
for(i=1; i<n; i++)
{
opt[i][0]=min(opt[i-1][0], opt[i-1][1]+c[i])+b[i];
opt[i][1]=min(opt[i-1][1], opt[i-1][0]+c[i])+a[i];
}
printf("%d\n", min(opt[n-1][0], opt[n-1][1]));
return 0;
}
本文详细阐述了简单动态规划的概念及应用,通过TYVJ-1195实例深入浅出地介绍了动态规划的基本思想、核心步骤及优化技巧,旨在帮助初学者掌握动态规划这一重要的算法解决策略。

2927

被折叠的 条评论
为什么被折叠?



