搜索
查看: 489|回复: 2
打印 上一主题 下一主题

[dp]不是采药

[复制链接]
跳转到指定楼层
楼主
发表于 2016-8-23 15:52:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. #include <stdio.h>
  2. int max(int x,int y){return x>y?x:y;}
  3. int main(){
  4. &nbsp; &nbsp; int n,m,w[101],c[101],dp[1001]={0};
  5. &nbsp; &nbsp; scanf("%d%d",&m,&n);
  6. &nbsp; &nbsp; for(int i=1;i<=n;i++)
  7. &nbsp; &nbsp; scanf("%d%d",c+i,w+i);
  8. &nbsp; &nbsp; for(int i=1;i<=n;i++)
  9. &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;for(int j=c[i];j<=n;j++)
  10. &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
  11. &nbsp; &nbsp; printf("%d\n",dp[m]);
  12. &nbsp; &nbsp; return 0;
  13. }
复制代码
沙发
 楼主| 发表于 2016-8-23 15:53:03 | 只看该作者
卧槽哪里来的那么多&nbsp;
板凳
 楼主| 发表于 2016-8-23 15:54:22 | 只看该作者


  1. #include <stdio.h>
  2. int max(int x,int y){return x>y?x:y;}
  3. int main(){
  4.     int n,m,w[101],c[101],dp[1001]={0};
  5.     scanf("%d%d",&m,&n);
  6.     for(int i=1;i<=n;i++)
  7.     scanf("%d%d",c+i,w+i);
  8.     for(int i=1;i<=n;i++)
  9.         for(int j=c[i];j<=n;j++)
  10.             dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
  11.     printf("%d\n",dp[m]);
  12.     return 0;
  13. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表