输出给定集合的所有排列与组合-python
2013-04-18 11:04
274 查看
输出全部排列:
算法思想如下:假设集合中有元素1...n,对于每一个元素k,使之为排列第一元素,然后递归求其余n-1个元素的全排列。将结果合并,输出即可,可保证无重复,并且结果是升序。代码如下:
输出全部组合:
算法思想如下:假设集合中有元素1...n, 对于每一个元素k,其皆有可能在组合中或不在组合中。所以求出其余n-1个元素的组合后,输出两个结果:含k与不含k。结果保证无重复。代码如下:
算法思想如下:假设集合中有元素1...n,对于每一个元素k,使之为排列第一元素,然后递归求其余n-1个元素的全排列。将结果合并,输出即可,可保证无重复,并且结果是升序。代码如下:
''' Created on 2013-4-9 @author: shatangju ''' def perm(items, n=None): if n == None: n = len(items) for i in xrange(len(items)): v = items[i: i+1] if len(items) == 1: yield v else: rest = items[:i] + items[i+1:] for p in perm(rest, n-1): yield v + p items = [1, 2, 3, 4, 5] for a in perm(items): print a
输出全部组合:
算法思想如下:假设集合中有元素1...n, 对于每一个元素k,其皆有可能在组合中或不在组合中。所以求出其余n-1个元素的组合后,输出两个结果:含k与不含k。结果保证无重复。代码如下:
''' Created on 2013-4-16 @author: shatangju ''' def comb(items, n=None): if n is None: n = len(items) for i in xrange(len(items)): v = items[i:i+1] if n == 1: yield v yield [] else: rest = items[i+1:] for c in comb(rest, n-1): yield v+c yield c items = [1, 2, 3, 4, 5] num = 0 for combination in comb(items): print combination num+=1 print num
相关文章推荐
- 编程题:输出字符集合的所有排列组合。
- 给定一个字符串,输出所有的排列组合方式
- 给定一个集合,输出它的所有子集(JAVA实现)
- 输出4个整数(不重复)的所有排列组合
- 【Python】排列组合itertools & 集合set
- 输出字符串的所有排列组合
- python把list的所有元素生成排列和组合
- 输出和为一个给定整数的所有组合
- 给定候选号码(C)和目标号码(T)的集合,找出C中候选号码总和为T的所有唯一组合 C中的每个数字只能在组合中使用一次。
- 输出n对括号的所有有效排列组合
- 输入N个数,输出所有可能的排列组合(6+个小时啊,耶稣~)
- 18 获取给定的序列的所有排列, 组合
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 面试题:输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 给定一个字符串,找出其所有不重复的排列组合
- 任意数字、字符序列,输出它们所有的排列组合
- Python实现在给定整数序列中找到和为100的所有数字组合
- 基于Visual C++2013拆解世界五百强面试题--题2-输出和为一个给定整数的所有组合