栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

部分背包问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

部分背包问题

#include

struct lv

{

    double w;

    double v;

    double ov;

    int num;

    double isall;

};

void paixu(struct lv *a,int n);

void f(struct lv*a,int n,double c);

int main()

{

    int n,c;

    scanf("%d%d",&n,&c);

    struct lv a[n];

    for(int i=0;i

    {

        scanf("%lf%lf",&a[i].w,&a[i].v);

        a[i].ov=a[i].v/a[i].w;

        a[i].num=i;

        a[i].isall=0;

    }

    paixu(a,n);

    f(a,n,c);

    for(int i=0;i

    printf("%d: %fn",a[i].num,a[i].isall);

}

void paixu(struct lv a[],int n)

{

    for(int i=1;i

    {

        struct lv t=a[i];

        int j=i-1;

        while(j>=0&&a[j].ov

        {

            a[j+1]=a[j];

            --j;

        }

        a[j+1]=t;

    }

}

void f(struct lv*a,int n,double c)

{

    int i;

    for(i=0;i

    {

        if(a[i].w>c)

            break;

            a[i].isall=1;

            c-=a[i].w;

    }

    if(i

    a[i].isall=(c)/a[i].w;

}

eg2:

#include
struct bag
{
    int num;
    double w;
    double v;
    double m;
    double isall;

};


int main()
{
    int n , bc;
    scanf("%d %d",&n,&bc);
    struct bag a[n];
    for(int i=0;i     {

        scanf("%lf %lf",&a[i].w,&a[i].v);
        a[i].num=i;
        a[i].m=a[i].v/a[i].w;
        a[i].isall=0;
    }
    for(int i=0;i     {
        int min=i;
        for(int j=0;j         {
        if(a[j].m             min=j;
            struct bag b=a[min];
            a[min]=a[i];
            a[i]=b;
        }
    }
    int i;
    for(i=0;i     {
        if(a[i].w>bc)
            break;
            a[i].isall=1;
            bc-=a[i].w;
    }
    if(i     a[i].isall=(bc)/a[i].w;

    for(int i=0;i         printf("%d: %fn",a[i].num,a[i].isall);
}
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291080.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号