2009-03-07 22:07:13來源不明

2006 NOIP 普及組 NOIP2006 2.開心的金明

DP(背包問題)

/************************************************************/

#include<stdio.h>                 
#include<stdlib.h>     
main()     
{     
 int n,a,b,m;  
 while(scanf("%d %d",&n,&m)==2)  
  {  
   int value[50000]={0},max=0,sum=n*m;  
   for(a=0;a<m;a++)  
    {  
     int w1,w,price1;  
     scanf("%d %d",&w1,&price1);
     for(b=n-w1;b>=0;b--) 
      {  
       if(value[b+w1]<value[b]+price1*w1)
        {  
         value[b+w1]=value[b]+price1*w1;  
         if(value[b+w1]>max)  
          max=value[b+w1];  
        }  
      }
    }  
    printf("%d\n",max);  
  }  
 return 0;     
}