8603 子集和问题
2013-01-27 21:46
169 查看
8603 子集和问题
时间限制:1000MS 内存限制:1000K
题型:编程题 语言:无限制
Description
S是一个整数集合,S={x1,x2,...,xn},c是一个整数。这里集合元素xi(1<=i<=n)和c都是整数,可能为负。
子集和问题就是:判断是否存在S的一个子集S1,使得:
![](http://img.my.csdn.net/uploads/201301/27/1359294727_8289.jpg)
对S集合子集树采用深度优先的顺序进行搜索,子集树从上到下每层标示着S集合中每个从左到右元素“选”或者“不选”(左1右0)。
试着用回溯算法设计解子集和问题。
![](http://img.my.csdn.net/uploads/201301/27/1359294755_7167.jpg)
Input
第一行2个数:正整数n和整数c。n表示S集合的大小,c是子集和的目标值,接下来一行中,有n个整数,表示集合S中的元素。
Output
将子集和问题的解输出,当无解时,输出"NoSolution"(注意No Solution的大小写,空格,无标点)。
注意:依据S集合元素从左到右依次来画子集树,因此子集树唯一。
若存在多种子集和问题的解时,只输出在这个唯一的子集树按深度优先方向遇到的第一个解,这样保证解的唯一性,利于评判。
如:5 10
2 2 6 3 3
这里,2+2+6=10,2+2+3+3=10,但只输出2 2 6
如:5 10
2 2 3 3 6
只输出2 2 3 3
又如:5 -30
2 -2 6 -30 -3
只输出2 -2 -30
Sample Input
5 10
2 2 6 5 4
Sample Output
2 2 6
Hint
解空间树是“子集树”。
回溯法搜索,由于是深度优先的找,找到就退出。
参考书上的“装载问题”和书上的“0-1背包问题”来写,因为都是搜索子集树。
但此题无法有很好的剪枝优化,因为所有整数有正有负,只有找到或找完整棵树才能退出。
++++++++++++++++++++++++++++++++++++++++++++++++++++++
源代码下载:http://download.csdn.net/detail/seanxu2012/5033894
++++++++++++++++++++++++++++++++++++++++++++++++++++++
时间限制:1000MS 内存限制:1000K
题型:编程题 语言:无限制
Description
S是一个整数集合,S={x1,x2,...,xn},c是一个整数。这里集合元素xi(1<=i<=n)和c都是整数,可能为负。
子集和问题就是:判断是否存在S的一个子集S1,使得:
![](http://img.my.csdn.net/uploads/201301/27/1359294727_8289.jpg)
对S集合子集树采用深度优先的顺序进行搜索,子集树从上到下每层标示着S集合中每个从左到右元素“选”或者“不选”(左1右0)。
试着用回溯算法设计解子集和问题。
![](http://img.my.csdn.net/uploads/201301/27/1359294755_7167.jpg)
Input
第一行2个数:正整数n和整数c。n表示S集合的大小,c是子集和的目标值,接下来一行中,有n个整数,表示集合S中的元素。
Output
将子集和问题的解输出,当无解时,输出"NoSolution"(注意No Solution的大小写,空格,无标点)。
注意:依据S集合元素从左到右依次来画子集树,因此子集树唯一。
若存在多种子集和问题的解时,只输出在这个唯一的子集树按深度优先方向遇到的第一个解,这样保证解的唯一性,利于评判。
如:5 10
2 2 6 3 3
这里,2+2+6=10,2+2+3+3=10,但只输出2 2 6
如:5 10
2 2 3 3 6
只输出2 2 3 3
又如:5 -30
2 -2 6 -30 -3
只输出2 -2 -30
Sample Input
5 10
2 2 6 5 4
Sample Output
2 2 6
Hint
解空间树是“子集树”。
回溯法搜索,由于是深度优先的找,找到就退出。
参考书上的“装载问题”和书上的“0-1背包问题”来写,因为都是搜索子集树。
但此题无法有很好的剪枝优化,因为所有整数有正有负,只有找到或找完整棵树才能退出。
++++++++++++++++++++++++++++++++++++++++++++++++++++++
源代码下载:http://download.csdn.net/detail/seanxu2012/5033894
++++++++++++++++++++++++++++++++++++++++++++++++++++++
相关文章推荐
- 8603 子集和问题
- uva11205 -(简单题) 生成子集问题
- 编程拾趣--集合子集问题
- YTU.1759: 子集和问题
- [数字技巧]子集问题(寻找给定集合的所有子集)
- 回溯法 子集和问题
- 基于集合的子集与集合的全排列的相关问题
- 算法--全排列、全子集、DFS\BFS问题
- 用回溯法解决子集和问题【C#版本】
- 傻瓜方法求集合的全部子集问题(java版)
- 【NPC】13、三维匹配规约到子集和问题
- 算法: 找子集合并按权值和排序 (货郎问题辅助算法)
- 回溯法例题之子集树:数组定和问题
- 集合的子集 (其实是组合问题)
- 活动选择问题变形_值之和最大的兼容活动子集
- 算法二之子集和数问题
- 回溯法-子集和数问题
- 子集和问题
- 回溯算法-定和子集问题
- 数的全排列和 避免重复运,top之前不入栈,还有求n的数子集,不是全排列了,而是每个数选或不选的问题