用回溯法实现子集和问题的完整代码
2021-11-17 21:54:21 3.34MB 回溯法 子集和问题
1
5-1 子集和问题 问题描述:子集和问题的一个实例为。其中,S={x1,x2,...,xn}是一个正整数的集合,c是一个正整数 。 子集和问题判定是否存在S 的一个子集S1,使得子集里的元素之和为c 试设计一个解子集和问题的回溯法。 算法设计:对于给定的正整数的集合S={x1,x2,...,xn}和正整数c,计算S的一个子集S1,使得子集里的元素之和为c。 数据输入:由文件input.txt提供输入数据。文件第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值。 接下来的1行中,有n个正整数,表示集合S中的元素。 结果输出:将子集和问题的解输出到文件output.txt。当问题无解时,输出"No Solution!"。 输入文件示例 输出文件示例 input.txt output.txt 5 10 2 2 6 2 2 6 5 4
2021-11-17 21:50:13 2KB 子集和问题
1
S是一个整数集合,S={x1,x2,...,xn},c是一个整数。这里集合元素xi(1<=i<=n)和c都是整数,可能为负。 子集和问题就是:判断是否存在S的一个子集S1,使得: 使得x∈S1,∑x=c 对S集合子集树采用深度优先的顺序进行搜索,子集树从上到下每层标示着S集合中每个从左到右元素“选”或者“不选”(左1右0)。 试着用回溯算法设计解子集和问题。 Input 第一行2个数:正整数n和整数c。n表示S集合的大小,c是子集和的目标值,接下来一行中,有n个整数,表示集合S中的元素。 Output 将子集和问题的解输出,当无解时,输出"No Solution"(注意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
2021-11-17 21:46:39 664B 回溯法 子集数
1
子集和问题的一个实例为〈S,c〉。其中,S={x1,x2,…,xn}是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得 ∑x=c, (其中x∈S1)。试设计一个解子集和问题的方法。你可以假设处理范围不超出int型。 Input 测试数据第1 行有2个正整数n和c,n 表示S 的大小(n<=25),c是子集和的目标值(0
2021-11-17 21:08:49 1024B 算法 C C++ 编程
1
实现5-1子集和问题.cpp
2021-06-01 14:03:28 765B 算法设计与分析
1
子集和问题 Description 子集和问题的一个实例为〈S,t〉。其中,S={x1,x2,...,xn}是一个正整数的集合,c 是一个正整数。子集和问题判定是否存在S的一个子集S1,使得x∈S1,∑x=c. 试设计一个解子集和问题的回溯法。 «编程任务: 对于给定的正整数的集合S={x1,x2,...,xn}和正整数c,编程计算S 的一个子集 S1,使得x∈S1,∑x=c. Input 由文件input.txt 提供输入数据。文件第1 行有2 个正整数n 和c,n 表示S 的大小,c 是子集和的目标值。接下来的1 行中,有n 个正整数,表示集合S 中的元素。 Output 程序运行结束时,将子集和问题的解输出到文件output.txt中。 当问题无解时,输出“No Solution!”。 Sample Input 5 10 2 2 6 5 4 Sample Output 2 2 6
2019-12-21 20:29:21 3KB 子集和问题
1