这是noip的基本功。
题目:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。
解答:# include "iostream"
# include "cstdio"
using namespace std;
int
w[1000001],
c[1000001];
int
f[1001];
int main() {
int i,j,m,n;
int sc;
//freopen("package.in","r",stdin);
//freopen("package.out","w",stdout);
cin>>m;
cin>>n;
sc = 0;
for ( i=1; i<=n; i++ ) {
cin>>w[i];
sc += w[i];
cin>>c[i];
}//输入
for (i=1; i<=n; i++) {//代价
for ( j=w[i]; j<=m; j++ ) { //最大的价值
if(f[j-w[i]]+c[i]>f[j]){
f[j]=f[j-w[i]]+c[i];//看看这个是取还是不取,取最大值
}
}
}
printf("%d",f[m]);//输出
return 0;
}