石子合并 帮果实 动态规划解法
2016-11-23 15:31
183 查看
#include <iostream> #include <string.h> #include <stdio.h> using namespace std; const int INF = 1 << 30; const int N = 205; int dp ; int sum ; int a ; int getMinval(int a[],int n)//dp[i][j]表示的是第i到第j堆合并的最小花费 { for(int i=0;i<n;i++) dp[i][i] = 0; for(int v=1;v<n;v++)//中间隔几个合并 { for(int i=0;i<n-v;i++)//合并的起始i 那么结束的就是 j=i+v { int j=i+v; dp[i][j]=INF; int tmp=sum[j]-(i>0?sum[i-1]:0); for(int k=i;k<j;k++)//按相邻合并 dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+tmp); } } return dp[0][n-1]; } int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) scanf("%d",&a[i]); sum[0] = a[0]; for(int i=1;i<n;i++) sum[i] = sum[i-1] + a[i];//这几个数的和 printf("%d\n",getMinval(a,n)); } return 0; }
相关文章推荐
- 石子合并问题 --动态规划--解法1
- 石子合并 动态规划(直线型)
- poj1738 An old Stone Game 【GarsiaWachs算法】【动态规划】经典合并石子问题
- 动态规划入门 合并石子 COGS1660 石子合并
- 石子合并问题(动态规划)
- 动态规划(合并类)--石子合并
- 石子合并(动态规划)详细解题报告
- 动态规划——石子合并
- 石子合并问题--动态规划;贪心
- 石子合并_直线型 动态规划
- 石子合并——动态规划
- 石子合并问题--动态规划;贪心
- 石子合并(动态规划)详细解题报告
- 石子合并(动态规划)详细解题报告(转)
- 石子合并 动态规划(环形)
- 石子合并问题(动态规划)
- [动态规划] 洛谷P1063 能量项链 (石子合并)
- 石子合并(动态规划)详细解题报告
- 深入理解合并类动态规划——合并石子
- 石子合并(动态规划)详细解题报告