[c]代码库
#include <STDIO.H>
#include <STDLIB.H>
#define INF 1000000
#define MAXNUM 100
int n;//沙子的堆数
int Num[MAXNUM];//每堆沙子的数量
int F[MAXNUM][MAXNUM];//过程函数
int G[MAXNUM][MAXNUM];
int fnMin(int ,int );
//返回两个数的最小值
int main()
{
int i,j,k,m,L,t;
printf("输入沙堆的堆数n(1-100):\n");
scanf("%d",&n);
printf("输入每堆中沙子的个数:\n");
for(i=1; i<=n; i++)
{
scanf("%d",&Num[i]);
G[i][i]=Num[i];
F[i][i]=0;
}
for (m=n-1;m>=1;m--)
{
for (i=1;i<=m;i++)
{
L=n-m+1;
j=i+L-1;
for (k=i;k<=j;k++)
{
G[i][j]=G[i][j]+G[k][k];
}
F[i][j]=INF;
for (k=i;k<=j-1;k++)
{
t=F[i][k]+F[k+1][j]+G[i][j];
if (t<F[i][j])
{
F[i][j]=t;
}
}
}
}
printf("最小代价:%d\n",F[1][n]);
return 0;
}
初级程序员
by: 云代码会员 发表于:2015-06-19 15:23:24 顶(0) | 踩(0) 回复
不错
回复评论