C++ 动态规划 背包问题的提高 —— 简单的有依赖性背包问题-金明的预算方案

 

     金明的预算方案

       有依赖性的背包正解为树形DP,对本人来说从未学过,但还好,这道题不用,因为每个主件只有两个附件且附件没有自己的附件,那么只需要考虑五种情况 :

       一. 只买主件

      二. 买主件和第一个附件

      三. 买主件和第二个附件

      四. 买主件和两个附件

      五. 什么都不买

      那么这道题就十分简单了。

      不过,该怎么确定主件的附件呢?

      首先要定义一个结构体数组,用来存放价格,重要度,是否为附件,编号,附件个数,附件编号

struct things{
    int v,w,q,num;//记录价格,重要度,是否为附件,编号 
    int s;//记录该零件的附件个数 
    int k[70];//记录该零件附件的编号 
}a[70];

       q表示附件的主件的编号,然后创立主件的附件集合(就是存附件的编号)  

       创建完过后,会发现有些主件没有附件,需要去判定是否有附件,不妨将没有附件的主见的附件认为是零,这样就更加简便&#x

posted @ 2018-12-11 13:12  Nomad_Joe_violet  阅读(18)  评论(0)    收藏  举报  来源