贪心算法基础专练

本文主要探讨了贪心算法在解决实际问题中的应用,包括如何在智力游戏中选择最优策略以赢得最多钱,如何处理数列极差问题,以及在处理数列分段和线段问题时的思考过程。解决问题的关键在于正确理解和运用贪心策略,以及适时地进行数据排序和处理连续段的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A.智力大冲浪
由于本题要求的是小伟能赢取得最多的钱,所以我们只要用m减去扣款数最低的不可执行游戏即可。因此,要先对每个游戏的扣款数由大到小排序,优先安排价值最大的游戏,如果该游戏的期限已经有安排,就从他的期限向下遍历,直到1,如果都有安排,那就是不可执行游戏。

#include<stdio.h>
int main()
{
    int m,n,l[505][2],x,sum=0,k[505];
    for(int i=0;i<505;i++)
        k[i]=0;
    scanf("%d",&m);
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&l[i][0]);
    for(int i=0;i<n;i++)
        scanf("%d",&l[i][1]);
    for(int i=0;i<n-1;i++)
        for(int j=0;j<n-1;j++)
        if(l[j][1]<l[j+1][1])
        {x=l[j][1];l[j][1]=l[j+1][1];l[j+1][1]=x;
        x=l[j][0];l[j][0]=l[j+1][0];l[j+1][0]=x;}
    for(int i=0;i<n;i++)
        for(int a=l[i][0]-1;a>=0;a--)
        {
            if(k[a]==0)
            {
                l[i][1]=0;
                k[a]=1;
                break;
            }
        }
    for(int i=0;i<n;i++)
        sum+=l[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值