#include <iostream>
using namespace std;
void Sort(int n,float *w,float *v)
{
int i,j;
float temp1,temp2;
for(i=1;i<=n;i++)
for(j=1;j<=n-i;j++)
{
temp1=v[j]/w[j];
temp2=v[j+1]/w[j+1];
if(temp1<temp2)
{
swap(w[j],w[j+1]);
swap(v[j],v[j+1]);
}
}
}
int main()
{
float w[101];
float v[101];
float x[101];
int n,s;
float M;
printf("请输入货物数n和背包最大容量M:");
cin>>n>>M;
for(int i=1;i<=n;i++)
{
printf("请输入第%d种货物的重量w和价值v:",i);
cin>>w[i]>>v[i];
s=s+w[i];
}
if(s<=M)
{
for(int i=1;i<=n;i++)
{
cout<<"重量为"<<w[i]<<",价值量为"<<v[i]<<"的货物"<<"放入的比例为:1"<<endl;
}
return 0;
}
Sort(n,w,v);
int i;
for(i=1;i<=n;i++)
x[i]=0;
float c=M;
for(i=1;i<=n;i++)
{
if(c<w[i]) break;
x[i]=1;
c=c-w[i];
}
if(i<=n)
x[i]=c/w[i];
for(int i=1;i<=n;i++)
cout<<"重量为"<<w[i]<<",价值量为"<<v[i]<<"的货物"<<"放入的比例为:"<<x[i]<<endl;
return 0;
}