GetArray2.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import math
  2. def jieChen(n):
  3. myArray = {};
  4. myArray[0] = 1;
  5. i = 1;
  6. while i<n :
  7. myArray[i] = (i+1)*myArray[i-1];
  8. i = i+1
  9. return myArray;
  10. def jieChenNumber(n):
  11. if(n <= 1):
  12. return 1;
  13. return jieChen(n)[n-1];
  14. #辗转相除法进行进制转化
  15. def changeInt2Str(i,m):
  16. if(not isinstance(m,int)):
  17. print("m is not int",m)
  18. return
  19. if(m*i == 0):
  20. return "0";
  21. result = "";i
  22. myarray = {};
  23. while(i>=m):
  24. myarray[myarray.__len__()] = i%m
  25. i=int(i/m)
  26. if(i!=0):
  27. myarray[myarray.__len__()] = i
  28. for item in myarray :
  29. result=str(myarray[item])+result
  30. return result
  31. #获取组合数
  32. def getAllArray(m,n):
  33. allArray = {}
  34. max = math.pow(m,n)
  35. index = 0;
  36. while (index < max):
  37. itemIndex = changeInt2Str(index,m)
  38. while(itemIndex.__len__()<n):
  39. itemIndex = "0"+itemIndex
  40. allArray[index]=itemIndex
  41. index = index+1
  42. print(allArray)
  43. #获取单个组合的各边重复项
  44. def getitemIndexArray(itemIndex,n):
  45. a = {};
  46. for item in range(n):
  47. index = 0;
  48. indexNum = 0;
  49. while(index < n):
  50. if(itemIndex[index] == str(item)):
  51. indexNum = indexNum + 1
  52. index = index+1
  53. a[item]=indexNum
  54. print(a)
  55. return a
  56. def getitemIndexArrayNumber(itemIndex,n):
  57. itemIndexArrayNumber = 0;
  58. a = getitemIndexArray(itemIndex,n)
  59. for item in a:
  60. intItem = int(a[item])
  61. if(intItem > 1):
  62. itemIndexArrayNumber = jieChenNumber(intItem)+itemIndexArrayNumber
  63. return itemIndexArrayNumber
  64. # result = changeInt2Str(14,3);
  65. # print(result)
  66. # getAllArray(4,3)
  67. # getitemIndexArray("01200",5)
  68. number = getitemIndexArrayNumber("01200",5)
  69. print(number)