简单的背包最大效益问题

来源:互联网 发布:昆明询知培训中心av2类 编辑:程序博客网 时间:2024/04/29 11:02

题目链接:点击打开链接

解题代码:

#include<iostream>#include<algorithm>#include<cstdio>using namespace std;void BubbleSort(double b[],int a[][2],int m){    double temp;    int temp1,temp2;    for(int i=1;i<m;i++)        for(int j=m-1;j>i-1;j--)            if(b[j]>b[j-1])            {                temp=b[j];                b[j]=b[j-1];                b[j-1]=temp;                temp1=a[j][0];                a[j][0]=a[j-1][0];                a[j-1][0]=temp1;                temp2=a[j][1];                a[j][1]=a[j-1][1];                a[j-1][1]=temp2;            }}int main(){    int n,m,a[1003][2];    double b[1003],summ;   // freopen("test.txt","r",stdin);    while(scanf("%d%d",&n,&m)!=EOF&&n!=-1)    {        summ=0;        for(int i=0;i<m;i++)            scanf("%d%d",&a[i][0],&a[i][1]);        for(int i=0;i<m;i++)            b[i]=(a[i][0]*1.0)/a[i][1];        BubbleSort(b,a,m);        for(int i=0;i<m;i++)        {            if(n>=a[i][1])            {                summ=summ+a[i][0];                n=n-a[i][1];            }            else            {                summ=summ+b[i]*n;                n=0;            }            if(n==0)                break;        }        printf("%.3lf\n",summ);    }    return 0;}


0 0
原创粉丝点击