zoukankan      html  css  js  c++  java
  • 算法二之子集和数问题

    什么是子集和数问题?

    问题分析,简单的说就是有n 个数在这N个数中选取若干个数使得这几个数的和为M。

    解决问题的途径;使用回溯法。

    最后形成二叉树

    左边是有这个数,右儿子是没有这个数。

    使用回溯法,一个一个的进行计算,时间太长。

    使用一定的条件,使得时间减短。

    前提是对所有的数字进行非降序排序,然后在进行下面的操作。

    限界函数,将有可能产生解的集合进行缩小。有的不可能产生可行解的直接进行排除。

    ∑W(i)X(i)+∑W(i)>=M

    ∑W(i)X(i)+W(k+1)>M

    如果加入一个数k,如果k-1个数的和小于M,加上K小于M但是加上k的下一个数后大于M,那么数k也不用进行计算,直接排除。

  • 相关阅读:
    数据库子句
    数据查询的语言
    试图
    Bootstrap 简介及引用方法
    一阶段项目整理
    js 鼠标移入移出
    js 鼠标点击事件
    轮播图
    滚动条 固定导航栏
    三元运算符 DOM找元素
  • 原文地址:https://www.cnblogs.com/ysugyl/p/4641573.html
Copyright © 2011-2022 走看看