简单的背包问题
来源:互联网 发布:mtv分享精灵软件 编辑:程序博客网 时间:2024/05/19 22:50
#include<algorithm>#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;typedef struct { int v; int w; }data; data a[10]; int compare(const data &a, const data &b) { return a.v > b.v; } int n, m;int bake(int n, int m){ int i,sum=0; int *b = new int[10]; for(i=0; i<n; i++) scanf("%d %d",&a[i].v, &a[i].w); sort(a,a+n,compare); // for(i=0; i<n; i++) b[i] = 0; for(i=0; i<n; i++) { if(a[i].w>m)break; m -= a[i].w; sum+=a[i].w*a[i].v; } if(i<n) sum+=m*a[i].v; printf("%d\n",sum);}int main(){ int N; scanf("%d",&N); while(N--) { scanf("%d %d",&n,&m); bake(n,m); } system("pause"); return 0;}
点击打开链接