小明是一名货车司机,他需要从N件货物中选取若干件运送到某地,货车的总载重量是W吨,而每件货品的价格和重量是不同的,小明只能运送一次,那么问题来了,假如给出N件商品的价格和重量,在总载重量允许情况下(即总重量<=W)一次拉货所能获得的最大总价格是多少?
输入格式:
输入两个正整数N和W,N表示货物的件数N<30,W表示货车的最大承重。
然后输入N行,每行两个整数,分别表示货物的价格和重量。
输出格式:
在总载重量允许情况下(即总重量<=W)一次拉货所能获得的最大总价格。
输入样例:
4
3
2 1
2 2
5 3
9 4
输出样例:
5
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <math.h>
int x=0, y=0;
struct wjk
{
int a, b;
};
struct wjk c[10000];
void wjk(int n)
{
int j=1;
x=0,y=0;
while(n)
{
if(n%2!=0)
{
x+=c[j].a;
y+=c[j].b;
}
n/=2;
j++;
}
}
int main()
{
int i, n, w, max=0, sum=1, j;
scanf("%d%d", &n, &w);
for(i=1; i<=n; i++)
scanf("%d%d", &c[i].a, &c[i].b);
for(j=1;j<=n;j++)
sum*=i;
for(i=1; i<sum; i++)
{
wjk(i);
if(x>max&&y<=w)
max=x;
}
printf("%d", max);
return 0;
}