设为首页 加入收藏

TOP

动态规划求0/1背包问题
2014-11-23 19:43:51 来源: 作者: 【 】 浏览:37
Tags:动态 规划 0/1 背包 问题

  #include
  #include
  #include
  //goods是一个或多个物品的重量和价值
  typedef struct goods
  {
  int weight;
  int value;
  } goods;
  //用来定义一个queryList数组
  //数组中的每个元素定义一趟需要记录的数据
  typedef struct queryList
  {
  goods *subResult; //一趟需要记录的数据
  int end; //指示该趟数据的最后一个元素
  } queryList;
  queryList* dknap(goods *Goods, int count, int capacity)
  {
  int i, j, next, pre, index, k;
  queryList *ql;
  goods cur;
  ql = (queryList *)malloc(sizeof(queryList)*count);
  ql[0].subResult = (goods*)malloc(sizeof(goods));
  ql[0].end = 0;
  ql[0].subResult->weight = 0;
  ql[0].subResult->value = 0;
  for(i=1;iql[i-1].subResult[pre].weight)
  if (cur.value = ql[i-1].subResult[pre].value) //抛弃旧元素
  pre++;
  else //插入新生成元素
  {
  ql[i].subResult[index].weight = cur.weight;
  ql[i].subResult[index].value = cur.value;
  index++;
  cur.weight = ql[i-1].subResult[next].weight + Goods[i-1].weight;
  cur.value = ql[i-1].subResult[next].value + Goods[i-1].value;
  next++;
  }
  else
  if (cur.value >= ql[i-1].subResult[pre].value) //抛弃旧元素
  pre++;
  else //抛弃新生成元素
  {
  cur.weight = ql[i-1].subResult[next].weight + Goods[i-1].weight;
  cur.value = ql[i-1].subResult[next].value + Goods[i-1].value;
  next++;
  }
  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用动态规划实现导弹拦截 下一篇计算机二级C++辅导:数据类型总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: