P1276

P1276

还是背包..

#include  < iostream >
using   namespace  std;
const   int  MAXN = 11 ;
int  cash;
int  n;
int  t[MAXN];
int  g[MAXN];
bool  f[ 100001 ];
int  main()
{
 
while(cin>>cash>>n)
 
{
  
for (int i=1;i<=n;i++)
  
{
   cin
>>t[i]>>g[i];
  }

  memset(f,
false,sizeof(f));
  f[
0]=true;
  
for (int i=1;i<=n;i++)
   
for (int j=cash;j>=0;j--)
   
{
    
if (f[j])
    
{
     
for (int k=1;k<=t[i];k++)
     
{
      
int p=j+k*g[i];
      
if (p<=cash) f[p]=true;
     }

    }

   }

  
for (int i=cash;i>=0;i--)
   
if (f[i]) {cout<<i<<endl;break;}
 }

 
    
 
return 0;
}

你可能感兴趣的:(P1276)