排列组合问题

来源:互联网 发布:南京网络问政 编辑:程序博客网 时间:2024/05/30 23:37

问题描述:将1到9 , 9个数字填入下列式子中,使其成立
()-()=()-()=()-()=()-()=()
找出所有的可能(由一道小学3年级的题改编 =。=!)
思路:将9个数字放入列表中,获取所有的可能的列表。带入上面的公式,成立的打印出来。
思路很简单,本以为很快就能做出来,但是当我排列组合时,遇到了各种问题(有兴趣的朋友可以试试),所以最后只能用我大
Python的内置函数了。
关于全排列combinations和permutations函数,我看这个博客写的已经比较好了,我就不赘述了。

from itertools import permutationsi=0datas = [1,2,3,4,5,6,7,8,9]for arr in list(permutations(datas,9)):    arr_data = list(arr)#将元组转成列表    if arr_data[0] - arr_data[1] == arr_data[2] - arr_data[3] and arr_data[0] - arr_data[1] == arr_data[4] - arr_data[5] and arr_data[0] - arr_data[1] == arr_data[6] - arr_data[7] and arr_data[0] - arr_data[1] == arr_data[8]:        print("%d - %d = %d - %d = %d - %d = %d - %d = %d "%(arr_data[0],arr_data[1],arr_data[2],arr_data[3],arr_data[4],arr_data[5],arr_data[6],arr_data[7],arr_data[8]))        i+=1   print("total is %d"%i)

总结:我觉得我应该看点算法的东西,脑子越来越不好使了QAQ


关于递归,我找到一遍很好的博客,有时间看一下
这个博客里提到了排列数组的插入方法,让我想起了以前的学生生活,再想想现在,哎,脑子真的不好使了 。。。