| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1893 人关注过本帖
标题:求助 dp问题 实在是想不出来
只看楼主 加入收藏
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
写了一段代码,但我没法验证它是否正确

程序代码:
#include <stdio.h>

typedef struct {
    unsigned a;
    unsigned b;
} pair;

static pair foo_( pair p[], unsigned n, unsigned m, pair cur )
{
    if( m == 0 )
        return cur;

    double cpr = 0;
    unsigned index = 0;
    for( unsigned i=0; i!=n; ++i )
    {
        if( p[i].a != 0 )
        {
            if( cpr < (p[i].a + cur.a)*1.0/(p[i].b + cur.b) )
            {
                cpr = (p[i].a + cur.a)*1.0/(p[i].b + cur.b);
                index = i;
            }
        }
    }
    pair t = { p[index].a+cur.a, p[index].b+cur.b };
    p[index].a = 0;
    return foo_(p,n,m-1,t);
}
double foo( pair p[], unsigned n, unsigned m )
{
    pair r = foo_( p, n, m, (pair){0,0} );
    return r.a*1.0/r.b;
}

int main( void )
{
    unsigned t;
    scanf( "%u", &t );
    for( unsigned i=0; i!=t; ++i )
    {
        pair p[10000];
        unsigned n, m;
        scanf( "%u%u", &n, &m );
        for( unsigned j=0; j!=n; ++j )
            scanf( "%u%u", &p[j].a, &p[j].b );
        printf( "Case #%u: %.2f\n", i+1, foo(p,n,m) );
    }
}
2020-11-30 10:11
快速回复:求助 dp问题 实在是想不出来
数据加载中...
 
   



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

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