15 101 2 3 4 55 4 3 2 1Example Output
14题意大概:第一行输入测试数据的组数。 第二行输入骨头的个数和自己背包的体积。 第三行输入每个骨头的价值。 第四行输入每个骨头的体积。 输出可以获得的最大价值。此题为背包问题中的一种,一个物品只能拿一次,求最大获得价值。#include<stdio.h>#include<string.h>int df[1000];int max(int a,int b){ return (a>b?a:b);}int main(){ int t,i,j,n,v; int p[1000],w[1000]; scanf("%d",&t); while(t--) { memset(df,0,sizeof(df)); scanf("%d%d",&n,&v); for(i=0;i<n;i++) { scanf("%d",&p[i]); } for(i=0;i<n;i++) { scanf("%d",&w[i]); } for(i=0;i<n;i++) { for(j=v;j>=w[i];j--) { df[j]=max(df[j-w[i]]+p[i],df[j]); } } printf("%d/n",df[v]); } return 0;}
新闻热点
疑难解答