https://vjudge.net/contest/210340#problem/B
一直RUNtime error 。。最后才找到是因为把等于0的情况放在输入数据前面先输出,调一下顺序就AC了
#include<iostream>
#include<cstring>
using namespace std;
int dp[100055];
int count[11];
int w[11];
int main()
{
int sum,n;
while(cin>>sum>>n)
{
for(int i=0;i<n;i++)
cin>>count[i]>>w[i];
if(sum==0||n==0){cout<<0<<endl;continue;}
memset(dp,0,sizeof(dp));
dp[0]=1;
int m=0;
for(int i=0;i<n;i++)
for(int j=m;j>=0;j--)
if(dp[j])
{
for(int k=0;k<=count[i];k++)
{
int temp=j+k*w[i];
if(temp>sum)break;
dp[temp]=1;
m=max(m,temp);
}
}
cout<<m<<endl;
}
return 0;
}