背包问题
描述
1 3 15 5 10 2 8 3 9
65
{
if(m>=w[i])
{ f+=v[i]*w[i]; m-=w[i]; }
else
{ f+=v[i]*m; break; }
}
#include<stdio.h>
int main()
{
int n,i,j,k,l;
int v[10],w[10];
scanf("%d",&n);
while(n--)
{
int m,s,f=0;
scanf("%d%d",&s,&m);
for(i=0; i<s; i++)
scanf("%d%d",&v[i],&w[i]);
for(i=0; i<s-1; i++)
{
for(j=0; j<s-1-i; j++)
{
if(v[j]<v[j+1])
{
k=v[j];
v[j]=v[j+1];
v[j+1]=k;
l=w[j];
w[j]=w[j+1];
w[j+1]=l;
}
}
}
for(i=0; i<s; i++)
{
if(m>=w[i])
{
f+=v[i]*w[i];
m-=w[i];
}
else
{
f+=v[i]*m;
break;
}
}
printf("%d\n",f);
}
return 0;
}