背包问题
  Mqh2iumZ9USt 2023年11月02日 47 0


描述





给定一个最大载重量为M的卡车和N种食品,有食盐,白糖,大米等。已知第 i 种食品的最多拥有Wi 公斤,其商品价值为Vi元/公斤,编程确定一个装货方案,使得装入卡车中的所有物品总价值最大。



输入





输入只包括一个用例,第一行为两个正实数M,N,分别表示卡车载重量和食品种数,接下来N行,每行两个正实数,分别表示第i食品的重量和价值。



输出





输出一含一个数,即装入卡车的最大价值,要求只保留两位小数。



样例输入


5 3
2 9
3 11
1 5


样例输出


21.33




#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
struct st
{
double v,w,c,sum;
}dp[1000];
int cmp(const st &a,const st &b)
{
return a.c>b.c?1:0;
}
int main()
{
int m,n,k;
while(cin>>m>>n){
double sum=0;
memset(dp,0.0,sizeof(dp));
for(int i=0;i<n;i++)
{
cin>>dp[i].w>>dp[i].v;
dp[i].c=dp[i].v/dp[i].w;
}
sort(dp,dp+n,cmp);
for(int i=0;i<n;i++)
{
while(dp[i].w--)
{
sum=sum+dp[i].c;
m--;
if(m==0)break;
}
if(m==0)break;
}
printf("%.2f\n",sum);
}
return 0;
}



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wD98WYW8hiWJ   2023年11月20日   27   0   0 #include
  v0MZS93bOvwU   2023年11月02日   52   0   0 #include
  oYd6WBUwpOnX   2023年11月02日   41   0   0 3D2d缩放ios
  Fv5flEkOgYS5   2023年11月02日   49   0   0 i++javaide
Mqh2iumZ9USt