uva757 - Gone Fishing

本文详细介绍了如何运用贪心算法解决池塘捕鱼问题,通过优化路径选择,避免重复计算,实现高效求解。重点讨论了题目的难点在于将问题转化为清晰的思路,并提供了具体代码实现,帮助读者理解并掌握贪心算法的应用。

搞了一下午的题目,,,

开始的时候虽然把特殊情况列出来了,(最后答案为0)但是还是错在上面了

犯错的地方我已在代码中标识了出来,,

思路吗,主要是贪心,,

假设在前x个池塘就能得到最大鱼数,,

然后让x从1到n遍历,,,,

这样就避免了路上时间的重复。。从而在目前情况下达到最优。。。。

在我看来难点是怎么 题意把转化成自己清晰的思路。

代码如下:

#include <cstdio>
#define M 30
int n, h, f[M], d[M], t[M], ans[M], te[M];
int maxi (int a, int b, int *A)
{
    int ans = 0;
    for(int i = a; i <= b; i++) if(A[ans]<A[i])
    ans = i;
    return ans;
}
int solve(int m)
{
    int tmax = h*12-t[m];
    int tf[M];
    for(int i = 0; i < n; i++) {tf[i] = f[i]; te[i] = 0;}
    int ans = 0;
    int time = 0;
    while(time<tmax)
    {
        int ti = maxi(0,m,tf);
        if(tf[ti]<=0) break;
        ans+=tf[ti];
        tf[ti]-=d[ti];
        te[ti]++;
        time++;
    }
    if(time<tmax) te[0]+=tmax-time;
    return ans;
}
int main ()
{
    int tt = 0;
    while(scanf("%d",&n),n)
    {
        scanf("%d",&h);
        for(int i = 0; i < n; i++) scanf("%d",&f[i]);
        for(int i = 0; i < n; i++) scanf("%d",&d[i]);
        int temp;
        t[0] = 0;
        for(int i = 1; i < n; i++) {scanf("%d",&temp); t[i] = temp+t[i-1];}
        int max = -1, _ans;//注意max的初始值,不可以为零哦!!
        for(int i = 0; i < n; i++)
        {
            _ans = solve(i);
            if(max<_ans)
            {
                max = _ans;
                for(int i = 0; i < n; i++) ans[i] = te[i];
            }
        }
        if(tt++) printf("\n");
        for(int i = 0; i < n; i++) i==0?printf("%d",ans[i]*5):printf(", %d",ans[i]*5);
        printf("\nNumber of fish expected: %d\n",max);
    }
    return 0;
}




代码转载自:https://pan.quark.cn/s/f87b8041184b Language: 中文 欢迎来到戈戈圈! 当你点开这个存储库的时候,你会看到戈戈圈的图标↓ 本图片均在知识共享 署名-相同方式共享 3.0(CC BY-SA 3.0)许可协议下提供,如有授权遵照授权协议使用。 那么恭喜你,当你看到这个图标的时候,就代表着你已经正式成为了一名戈团子啦! 欢迎你来到这个充满爱与希望的大家庭! 「与大家创造更多快乐,与人们一起改变世界。 」 戈戈圈是一个在中国海南省诞生的创作企划,由王戈wg的妹妹于2018年7月14日正式公开。 戈戈圈的创作类型广泛,囊括插画、小说、音乐等各种作品类型。 戈戈圈的目前成员: Contributors 此外,支持戈戈圈及本企划的成员被称为“戈团子”。 “戈团子”一词最初来源于2015年出生的名叫“团子”的大熊猫,也因为一种由糯米包裹着馅料蒸熟而成的食品也名为“团子”,不仅有团圆之意,也蕴涵着团结友爱的象征意义和大家的美好期盼,因此我们最终于2021年初决定命名戈戈圈的粉丝为“戈团子”。 如果你对戈戈圈有兴趣的话,欢迎加入我们吧(σ≧︎▽︎≦︎)σ! 由于王戈wg此前投稿的相关视频并未详细说明本企划的信息,且相关视频的表述极其模糊,我们特此创建这个存储库,以文字的形式向大家介绍戈戈圈。 戈戈圈自2018年7月14日成立至今,一直以来都秉持着包容开放、和谐友善的原则。 我们深知自己的责任和使命,始终尊重社会道德习俗,严格遵循国家法律法规,为维护社会稳定和公共利益做出了积极的贡献。 因此,我们不允许任何人或组织以“戈戈圈”的名义在网络平台或现实中发布不当言论,同时我们也坚决反对过度宣传戈戈圈的行为,包括但不限于与戈戈圈无关的任何...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值