#include<bits/stdc++.h>
using namespace std;
int dp[100005];
int maxhh(int x,int y)
{
if(x>=y)return x;
else return y;
}
int main()
{
int n,m,i,j,a[105],b[105];//录入商品数据
while(scanf("%d",&n)!=EOF)
{
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)scanf("%d %d",&a[i],&b[i]);
scanf("%d",&m);
//完全背包问题
for(i=1;i<=n;i++)
{
for(j=b[i];j<=m;j++)
{
dp[j]=maxhh(dp[j],dp[j-b[i]]+a[i]);
}
}
printf("%d\n",dp[m]);
}
return 0;
}
总结
1.运行时错误可能是数组溢出,比如我出错是因为看错题目数据限制,dp数组取太小了