Python排列组合简单算法实现

算法题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

程序源代码:

1 for i in range(1,5):
2     for j in range(1,5):
3         for k in range(1,5):
4             if( i != k ) and (i != j) and (j != k):
5                 print i,j,k

实例输出结果为:

1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
时间: 2024-10-27 01:01:41

Python排列组合简单算法实现的相关文章

排列组合相关算法 python

获取指定长度得所有序列 通过事件来表述这个序列,即n重伯努利实验(二项分布)的所有可能结果.例如时间a表示为: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 假设每次实验为从a中选择一个数字,那么进行n次实验,获得所有可能得序列. 比如,进行两次实验, n=2, 那么可能得结果有100个.这里因为每次实验都是相对独立的,所以每次实验的结果可能出现重复,也就是说在获得所有可能的序列中,可以存在重复得值. 递归实现,DFS(深度优先遍历) def gen_all_seque

Python排列组合问题

1.字符串的全排列 问题描述:打印出原字符串中所有字符的所有排列.——将输入字符串中的每个字符作为一个不同的字符看待,即使它们是重复的,如'aaa'应打印6次. Python可以用生成器解决: def permutation(elements): if len(elements) <=1: yield elements else: for perm in permutation(elements[1:]): for i in range(len(elements)): yield perm[:i

排列组合生成算法

r排列生成: gen 递归层数d表示正在生成第d个元素. vis记录是否出现过. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n, r; int A[50], vis[50];//记录第i个元素是否生成过 int cnt; int rer; void output(int r) { for(int i = 0; i < r; i++) printf(

排列组合简单证明

排列: 从\(n\)个人中选出\(m\)个人来排队,他的做法是\(A_{n}^{m}\) 第一个位置可以放\(n\)个中的一个,第二个位置可以放\(n-1\)个中的一个......第\(m\)的位置可以放\(n-m+1\)个中的一个 所以可得:\(A_{n}^{m}=\frac{n!}{n-m!}\) 组合: 上面的问题我们可以分两步来看 1.选出\(m\)个人 2.这\(m\)个人排队 所以\(A_{n}^{m}=X*A_{m}^{m}\) 这个X就是从\(n\)个人中选出\(m\)个人来的方

python常用的简单算法,二分查找、冒泡排序、数组翻转等

1.二分查找:主要用于查询元素数量较多的列表,采用二分查找,取中位值,进行大小比较,可以提高效率 1 #二分查找,用于在较大的数据列表中查询某个值,考虑到元素比较多,单纯的遍历会造成内存压力过大,考虑使用二分查找 2 #二分查找的关键在于查询中间值,将需要查找的值与中间值进行比较,然后确定查找方向 3 def binary_search(data_source,find_n): 4 #取中位数 5 mid=int(len(data_source)/2) 6 7 if len(data_sourc

一道排列组合的算法题

给你一个40斤的西瓜,给3个人分,有多少种分法?我用PHP实现的,代码如下 $aa = range(1,40); $bb = array(); foreach($aa as $k=>$val){ foreach($aa as $v){ foreach($aa as $vl){ $sum = $val+$v+$vl; if($sum == 40){ $bb[$k][0] = $val; $bb[$k][1] = $v; $bb[$k][2] = $vl; } } } } echo '<pre&g

python 几个简单算法详解

一.冒泡排序 基本思想:它的思路很有特点循环,两两向后比较.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. #冒泡排序 # def bubble_sort(li): # for i in range(len(li)-1): #走一趟,循环的次数 # for j in range(len(li)-i-1): #有序列为,len(li)-i,去掉有序不循环 # if li[j]>li[j+1

python的一些 简单算法

1 使用 while 循环输入1  2 3 4 5   6          8 9  10 1 # coding=gbk 2 count=1 3 while count<11: 4 if count==7 : 5 pass 6 else: 7 print(count) 8 count=count+1 2        求1-100的所有数的和 1 # coding=gbk 2 count=1 3 sum=0 4 for count in range(1,100): 5 sum=sum+coun

w3cshool -- 排列组合去重算法挑战

function permAlone(str) { if(str.length == 1) return str; var a = str.substr(0, 1), one = [a], count = 0, toggle = true; for(var i = 0; i< str.length-1; i++) { var temp = str[i+1]; // 取出需要插入的字母 one = cha(one, temp) } // 判断数组是否有连续重复的 for(var k = 0; k<