C语言一菜鸟级


私信TA

用户名:LHL

访问量:66231

签 名:

AC总是意料之外 ^_^

等  级
排  名 53
经  验 11536
参赛次数 5
文章发表 56
年  龄 24
在职情况 在职
学  校 四川工商学院
专  业 通信工程

  自我简介:

C语言 蓝桥杯 ACM 新人 欢迎大佬 前来指导 交流 本人 博客https://fivecc.blog.csdn.net/

解题思路: 经典 01背包问题 

注意事项:

参考代码:

#include <stdio.h>
#include <string.h>
#define M 30010
#define Max(a,b) a>b?a:b
int main()
{
    int N,m,i,j,p,v;long int dp[M];
    memset(dp,0,sizeof(dp));
    scanf("%d%d",&N,&m);
    for(i=1;i<=m;i++)
    {scanf("%d%d",&v,&p);
     for(j=N;j>=v;j--)//枚举金钱 倒着 方式 降维
     dp[j]=Max(dp[j],dp[j-v]+v*p);//取与不取
    }
        printf("%ld\n",dp[N]);
    return 0;
}


 

0.0分

13 人评分

  评论区

  • «
  • »