poj 1726

时间:2023-03-09 16:39:40
poj 1726

http://poj.org/problem?id=1276

解题要点:用完全背包来模拟的解题,只不过加了限制条件used[]。。。其他的就一样了。。

注意: cash 和n 为0 的情况

 #include <iostream>
#include<cstring>
using namespace std;
int cash,n;
int amount[],w[];
int f[];
int used[];
int maxm(){
if(cash==||n==){
return ;
}
for(int i=;i<=n;i++){
memset(used,,sizeof(used));
for(int j=w[i];j<=cash;j++){
if((f[j]<f[j-w[i]]+w[i])&&(used[j-w[i]]+<=amount[i])){
f[j] = f[j-w[i]]+w[i];
used[j] = used[j-w[i]]+;
}
}
}
return f[cash];
}
int main()
{
while(cin>>cash>>n){
for(int i=;i<=n;i++)
cin>>amount[i]>>w[i];
memset(f,,sizeof(f));
cout<<maxm()<<endl;
}
return ;
}