用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

最小代码子母树问题

2015-03-14 作者: 西门春雪举报

[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;
}


网友评论    (发表评论)

共2 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...