陈阿水


私信TA

用户名:cas52012

访问量:12042

签 名:

MADAO

等  级
排  名 1815
经  验 2620
参赛次数 0
文章发表 10
年  龄 27
在职情况 待业
学  校 海南大学
专  业

  自我简介:

今天的动漫还没看!

解题思路:
01背包,价值加个乘法而己




注意事项:





参考代码:

#include<stdio.h>
#include<string.h>
int max(long int a,long int b)
{
    return a>=b?a:b;
}
int main()
{
    long int i,j,n,m,ma=0;
    long int a[30][2],pr[30010];
    scanf("%ld %ld",&n,&m);
    memset(pr,0,sizeof(pr));
    for(i=0;i<m;i++)
    {
        scanf("%ld %ld",&a[i][0],&a[i][1]);
        a[i][1]=a[i][0]*a[i][1];
    }
    for(i=0;i<m;i++)
    {
        for(j=n;j>=a[i][0];j--)
        {
            pr[j]=max(pr[j],pr[j-a[i][0]]+a[i][1]);
        }
    }
    for(i=0;i<=n;i++)
    {
        if(ma<pr[i])
            ma=pr[i];
    }
    printf("%ld",ma);
    return 0;
}

 

0.0分

0 人评分

  评论区

pr[j]=max(pr[j],pr[j-a[i][0]]+a[i][1])
有什么用
2019-08-10 11:03:35
能加注释么,没看懂..................
2018-03-26 17:48:52
  • «
  • 1
  • »