123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import math
- #获取阶乘列表
- def jieChen(n):
- myArray = {};
- myArray[0] = 1;
- i = 1;
- while i<n :
- myArray[i] = (i+1)*myArray[i-1];
- i = i+1
- return myArray;
- #获取指定数的阶乘
- def jieChenNumber(n):
- if(n <= 1):
- return 1;
- return jieChen(n)[n-1];
- #辗转相除法进行进制转化
- def changeInt2Str(i,m):
- if(not isinstance(m,int)):
- print("m is not int",m)
- return
- if(m*i == 0):
- return "0";
- result = "";i
- myarray = {};
- while(i>=m):
- myarray[myarray.__len__()] = i%m
- i=int(i/m)
- if(i!=0):
- myarray[myarray.__len__()] = i
- for item in myarray :
- result=str(myarray[item])+result
- return result
- #获取组合数列表
- def getAllArray(m,n):
- allArray = {}
- max = math.pow(m,n)
- index = 0;
- while (index < max):
- itemIndex = changeInt2Str(index,m)
- while(itemIndex.__len__()<n):
- itemIndex = "0"+itemIndex
- allArray[index]=itemIndex
- index = index+1
- print(allArray)
- return allArray
- #获取组合数列表的排列总数
- def getAllArrayNumber(m,n):
- total = 0
- allArray = getAllArray(m,n)
- for item in allArray:
- total = getitemIndexArrayNumber(allArray[item],m,n)+total
- print("total=",total)
- return total
- #获取单个组合的各边重复项
- def getitemIndexArray(itemIndex,m,n):
- a = {};
- for item in range(m):
- index = 0;
- indexNum = 0;
- while(index < n):
- if(itemIndex[index] == str(item)):
- indexNum = indexNum + 1
- index = index+1
- a[item]=indexNum
- print("a=",a)
- return a
- #获取单个组合的各边重复项的排列数
- def getitemIndexArrayNumber(itemIndex,m,n):
- itemIndexArrayNumber = 0;
- a = getitemIndexArray(itemIndex,m,n)
- for item in a:
- intItem = int(a[item])
- if(intItem > 1):
- itemIndexArrayNumber = jieChenNumber(intItem)+itemIndexArrayNumber
- if(itemIndexArrayNumber == 0):
- itemIndexArrayNumber = 1
- return itemIndexArrayNumber
- # result = changeInt2Str(14,3);
- # print(result)
- # getAllArray(4,3)
- getitemIndexArray("01243",5,5)
- # number = getitemIndexArrayNumber("51243",5)
- # print(number)
- # getAllArrayNumber(4,2)
|