1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| def MakeArrayCombination() : arrI = [1, 2, 3, 4] arrGoodsSplitCopy = arrI.copy() tryDepth = 0 maxTryDepth = len(arrI) arrTryNumMax = [] arrTryNum = [] arrTryValue = [] arrTryArrayPop = [] arrTryArrayBake = [] i = 0 while i < maxTryDepth : arrTryNumMax.append(maxTryDepth-i) arrTryNum.append(0) arrTryValue.append(0) arrTryArrayPop.append([]) arrTryArrayBake.append([]) i += 1
outDepth = 0 while outDepth < maxTryDepth : inDepth = 0 while inDepth < maxTryDepth : if inDepth == 0: curDepthArray = arrGoodsSplitCopy.copy() val = arrGoodsSplitCopy.pop(0) arrGoodsSplitCopy.append(val) arrTryArrayPop[inDepth] = curDepthArray arrTryArrayBake[inDepth] = curDepthArray.copy() else: curDepthArray = arrTryArrayBake[inDepth-1].copy() curDepthArray.pop(0) arrTryArrayPop[inDepth] = curDepthArray arrTryArrayBake[inDepth] = curDepthArray.copy() inDepth += 1
tryDepth = 0 curDepthArrayPop = arrTryArrayPop[tryDepth] val = curDepthArrayPop.pop(0) arrTryValue[tryDepth] = val tryDepth += 1 while tryDepth != 0 : if len(arrTryArrayPop[tryDepth]) != 0: curDepthArrayPop = arrTryArrayPop[tryDepth] val = curDepthArrayPop.pop(0) arrTryValue[tryDepth] = val
if tryDepth == maxTryDepth - 1 : print("当前组合数据 %s " % (arrTryValue)) if len(arrTryArrayPop[tryDepth]) == 0: while len(arrTryArrayPop[tryDepth]) == 0 : tryDepth -= 1 if tryDepth == 0 : break if tryDepth != 0 : curDepthArrayPop = arrTryArrayPop[tryDepth] curDepthArrayBake = arrTryArrayBake[tryDepth]
val = curDepthArrayPop.pop(0) arrTryValue[tryDepth] = val val = curDepthArrayBake.pop(0) curDepthArrayBake.append(val) curDepthArrayBakeCopy = arrTryArrayBake[tryDepth].copy() childIdx = tryDepth + 1 while childIdx < maxTryDepth: val = curDepthArrayBakeCopy.pop(0) arrTryArrayPop[childIdx] = curDepthArrayBakeCopy.copy() arrTryArrayBake[childIdx] = curDepthArrayBakeCopy.copy() childIdx += 1 if tryDepth != 0 : tryDepth += 1 outDepth += 1
|