子集和问题（），又称子集合加总问题，是计算复杂度理论和密码学中一个很重要的问题。问题可以描述为：给一个整数集合，问是否存在某个非空子集，使得子集内中的数字和为某个特定数值。例：给定集合{−7, −3, −2, 5, 8}，是否存在子集和为0的集合?答案是YES，因为子集{−3, −2, 5}的数字和是0。这个问题是NP完全问题，且或许是最容易描述的NP完全问题。一个等价的问题是：给一个整数集合和另一个整数"s"，问是否存在某个非空子集，使得子集中的数字和为"s"。子集合加总问题可以想成是背包问题的一个特