第9章 第4节 动态规划经典题.pptVIP

  • 64
  • 0
  • 约2.45万字
  • 约 66页
  • 2017-06-19 发布于湖北
  • 举报
第9章 第4节 动态规划经典题

第九章 动态规划 第四节 动态规划经典题 【例9-18】、合并石子 【问题描述】 在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 【编程任务】 试设计一个程序,计算出将N堆石子合并成一堆的最小得分。 【输入格式】 第一行为一个正整数N (2≤N≤100); 以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1≤i≤N)。 【输出格式】 为一个正整数,即最小得分。 s[i]表示前i堆石头的价值总和,f[i][j]表示把第i堆到第j堆的石头合并成一堆的最优值。 for (i=n;i=1;i--) for (j=i+1;j=n;j++) for (k=I;k= j-1;k++) f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+s[j]-s[i-1]); 输出F[1][n] 【参考程序】 #includecstdio #includecstring int min(int a,int b) { return a b ? b:a; // 三目运算符,相当于if(ab) return b; else return a; } int f[101][101]; int s[101]; int

文档评论(0)

1亿VIP精品文档

相关文档