题目http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=565

分析:题目是一个01背包问题。但是增加了路径输出。
由于路径,所以才有二维递推的形式。
dp[i,j]=max{ dp[i-1,j], dp[i-1,j-m[i]]+m[i]}
​在输出集合的时候,如果dp[i,j]==dp[i-1,j],那么表明第i个物品是没有选入的。
采用的逆推的形式。
#include<stdio.h>
#include<string.h>

int C,dp[21][100000];

int main()
{
  int N,m[22];
  while (scanf("%d%d",&C,&N)!=EOF)
  {
    for(int i=1;i<=N;i++)
      scanf("%d",&m[i]);

      for(int j=0;j<=C;j++)
      {
        if(j>=m[1]) dp[1][j]=m[1];
        else        dp[1][j]=0;

      }

    //递推
    for(int i=2;i<=N;i++)
      for(int j=0;j<=C;j++)
       {
         if(j>=m[i]&&dp[i-1][j]<dp[i-1][j-m[i]]+m[i])
            dp[i][j]=dp[i-1][j-m[i]]+m[i];
         else
            dp[i][j]=dp[i-1][j];
       }
    //输出集合,倒推
    int i=N,j=C;
    while(i)
    {
      if(dp[i-1][j]!=dp[i][j])
      {
        printf("%d ",m[i]);
        j-=m[i];
      }
      i--;
    }
    printf("sum:%d\n",dp[N][C]);
  }
  return 0;
}


UVA--624 CD(01背包+路径输出)的更多相关文章

  1. UVA 624 ---CD 01背包路径输出

    DescriptionCD You have a long drive by car ahead. You have a tape recorder, but unfortunately your b ...

  2. UVA 624 - CD (01背包 + 打印物品)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  3. uva 624 CD 01背包打印路径

    // 集训最终開始了.来到水题先 #include <cstdio> #include <cstring> #include <algorithm> #includ ...

  4. UVA 624 CD (01背包)

    //路径记录方法:若是dp[j-value[i]]+value[i]>dp[j]说明拿了这个东西,标志为1, //for循环标志,发现是1,就打印出来,并把背包的容量减少,再在次容量中寻找标志: ...

  5. UVA 624 CD[【01背包】(输出路径)

    <题目链接> 题目大意: 你要录制时间为N的带子,给你一张CD的不同时长的轨道,求总和不大于N的录制顺序 解题分析: 01背包问题,需要注意的是如何将路径输出. 由于dp时是会不断的将前面 ...

  6. UVA 624 CD(01背包+输出方案)

    01背包,由于要输出方案,所以还要在dp的同时,保存一下路径. #include <iostream> #include <stdio.h> #include <stri ...

  7. uva 624 CD (01背包)

      CD  You have a long drive by car ahead. You have a tape recorder, but unfortunately your best musi ...

  8. UVA 624 CD(DP + 01背包)

    CD You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music i ...

  9. uva624 CD (01背包+路径的输出)

    CD Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 624 ...

随机推荐

  1. Dos中转义符

    遇到个问题: java test R=<file> 11 22 按理说应该打印 R=<file> 11 22 但是,系统报错,写的是系统找不到指定文件. 是"< ...

  2. c_ 数据结构_图_邻接矩阵

    程序主要实现了图的深度遍历和广度遍历. #include <stdio.h> #include <stdlib.h> #include <string.h> #de ...

  3. Oracle18C安装后首次创建数据库并用sql developer 创建连接和用户

    注意: SQL Developer 不能用于创建Oracle数据库,只能用来连接已经创建的数据库,数据库的建立要通过Database Configuration Assistant(DBCA)来完成. ...

  4. Java Collection - HashMap

    HashMap源码解析 java.util.HashMap 类 https://www.cnblogs.com/ysocean/p/8711071.html HashMap线程不安全的原因 https ...

  5. Altera: set pin locations using tcl

    1, compile the project; 2, store current tcl settings: Project –> Generate Tcl File from Project- ...

  6. [JZOJ6279] 2019.8.5【NOIP提高组A】优美序列

    题目 题目大意 给你一个排列以及若干区间,对于每个区间,问包含它的最小的优美序列的区间. 所谓优美序列,即将权值排序后能够得到连续的排列. 思考历程 优美序列显然满足这个条件:\(mx-mn=r-l\ ...

  7. 数论剩余系——cf1089F

    关于模和互质,很好的题目 /* n两个质因子 x,y有 ax+by=n-1 ax+by=n-1 ax+1+by=n y|ax+1 gcd(x,y)=1 ax%y,a取[1,y-1],就会有[1,y-1 ...

  8. python封装email模块

    一.代码 from email.mime.text import MIMEText from email.header import Header from email.utils import pa ...

  9. 什么是存根类 Stub

    转:http://www.cnblogs.com/cy163/archive/2009/08/04/1539077.html 存根类是一个类,它实现了一个接口,但是实现后的每个方法都是空的.      ...

  10. VS2010-MFC(对话框:消息对话框)

    转自:http://www.jizhuomi.com/software/171.html 前面几节讲了属性页对话框,我们可以根据所讲内容方便的建立自己的属性页对话框.本节讲解Windows系统中最常用 ...