问题描述
  在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数。求把所有石子合并成一堆的最小花费。
输入格式
  输入第一行包含一个整数n,表示石子的堆数。
  接下来一行,包含n个整数,按顺序给出每堆石子的大小 。
输出格式
  输出一个整数,表示合并的最小花费。
样例输入
5
1 2 3 4 5
样例输出
33
数据规模和约定
  1<=n<=1000, 每堆石子至少1颗,最多10000颗。
 

题解

#include<stdio.h>
#include<stdlib.h>
#define INIF 0x3f3f3f3f
int N;
int dp[][] = {};
int sum[][];
int num[];
void minsz()
{
int i, j, k, t, len, minx;
for(i = ; i <= N; i++)
{
sum[i][i] = num[i];
for(j = i + ; j <= N; j++)
{
sum[i][j] = sum[i][j-] + num[j];//计算堆到堆的距离
}
}
for(j = ; j <= N; j++)
{
for(i = j-; i > ; i--)
{
minx = INIF;
dp[i][j] = INIF;
for(k = i; k < j; k++)
{
t = dp[i][k] + dp[k+][j] + sum[i][j];
if(t < minx)
minx = t;
}
dp[i][j] = minx;
}
}
printf("%d\n", dp[][N]);
} int main()
{
int i;
scanf("%d", &N);
for(i = ; i <= N; i++)
{
scanf("%d", &num[i]);
}
minsz();
return ;
}

最新文章

  1. js之如何获取css样式
  2. EPUBBuilder编辑器新版
  3. gdb调试小结
  4. ASP.NET中使用代码来进行备份和还原数据库
  5. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q94-Q96)
  6. 《ASP.NET1200例》高亮显示ListView中的数据行并自动切换图片
  7. F5 负载均衡
  8. Swift—静态属性- 备
  9. 菜单之一:Menu基础内容
  10. File对象的常用方法
  11. jQuery 学习笔记(三)——事件与应用
  12. Nginx--服务部署、基于域名的虚拟主机配置
  13. BackgroundWorker 组件
  14. docker swarm:Error response from daemon: rpc error: code = Unavailable desc = grpc: the connection is unavailable
  15. mybatis:数据持久层框架
  16. react-native中的style
  17. awk入门【转】
  18. 【AI】基本概念-准确率、精准率、召回率的理解
  19. Java中的权限修饰符private、protected、public
  20. BP浅谈

热门文章

  1. MSSQL Join的使用
  2. Win10 Bash更改默认用户
  3. QTP11使用DOM XPath以及CSS识别元素对象
  4. Rozor视图(c#代码与html混合编程原则)
  5. vesamenu.c32:not a COM32R image报错解决方案
  6. 配置镜像yum源--解决RHN not available的问题
  7. memset,memcpy,strcpy的使用与区别
  8. php命令行操作
  9. HDU 4921 Map(状态压缩)
  10. C++面向对象类的实例题目四