题目描述:这是属于部分背包问题,一老鼠有M斤猫粮,要拿去和猫交换鼠粮,不同的猫咪兑换标准不一样,求老鼠用自己的猫粮如何能尽可能的换到更多鼠粮?输入数据包括多组样例,第一行是两个整数,M和N,M代表鼠拥有的猫粮有多少斤,N表示有N只猫同意交换。若N==M==-1,结束输入。接下来输入N组数据,每组数据包括两个整数,j和f 。代表猫愿意用f斤猫粮换j斤鼠粮。结果保留小数点三位。
测试样例:
输入:
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
输出:
13.333
31.500
代码实现:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int j[9999],f[9999];
double ave[9999];
int i,m,n,k,tem;
double leftm,sum,largeave;
while(1){
scanf("%d %d",&m,&n);
if(m==-1&&n==-1) break;
sum=0;
leftm=m;
for(i=0;i<n;i&#