| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6686 人关注过本帖
标题:我做了个题目,但是测试过不了,大家看看
只看楼主 加入收藏
realfree
Rank: 2
等 级:论坛游民
帖 子:11
专家分:22
注 册:2009-6-20
收藏
得分:0 
我试了下不用递归做的,而是用数组来填表做的,也能通过测试,
下面贴出代码,大家多多指教:

# include <iostream>
# include <fstream>
using namespace std;

# define MAX 1000
int book[MAX];
int F[MAX][MAX],G[MAX][MAX];

void min(int n)//填表函数
{
    int i,j,k,temp=9999999;
    for(i=1;i<n;i++)
    {
        for(j=1;j<=n-i;j++)
        {
            for(k=j;k<j+i;k++)
            {
                if(temp>F[j][k]+F[k+1][j+i])
                    temp=F[j][k]+F[k+1][j+i];
            }
            F[j][j+i]=temp+G[j][j+i];
            temp=9999999;
        }
    }
}

int main()
{
    int s,e,n,w,v,i,j,k;
    ifstream f;
    f.open("data.txt");
    f>>n;
    for(i=1;i<=n;i++)//初始化
    {
        f>>w>>v;
        book[i]=w-v;
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            F[i][j]=0;
            G[i][j]=0;
            for(k=i;k<=j;k++)
            {
                G[i][j]=G[i][j]+book[k];
            }
        }
    }
    min(n);//调用填表函数
    cout<<"请输入要合并的书堆的起始和终止位置: "<<endl;
    cin>>s>>e;
    cout<<"最小力气为: "<<F[s][e]<<endl;
    f.close();
    return 0;
}


[ 本帖最后由 realfree 于 2010-10-23 01:55 编辑 ]
2010-10-23 01:52
快速回复:我做了个题目,但是测试过不了,大家看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018517 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved