01背包问题

来源:互联网 发布:免费附近聊天软件 编辑:程序博客网 时间:2024/06/05 10:41
#include<stdio.h>  
#include<string.h>
int v[26],w[26];  
int dp[30005];  
int max(int a,int b)  
{
return a>b?a:b;
}  
int main()  
{  
    int N,n,m,i,j;  
    scanf("%d",&N);  
    while(N--)  
    {  
        scanf("%d%d",&n,&m);  
        for(i=0;i<m;i++)  
            scanf("%d%d",&v[i],&w[i]) ; 
         memset(dp,0,sizeof(dp));  
        for(i=0;i<m;i++)  
            for(j=n;j>=v[i];j--)  
                dp[j]=max(dp[j],dp[j-v[i]]+w[i]*v[i]); 
printf("%d\n",dp[n]);
}
    return 0;  
}  
0 0
原创粉丝点击