这是结合gpt给出的代码:
def generate_combinations_with_constraints(A, B, D, index, current_combination, result):
if index == len(A):
result.append(current_combination.copy())
return
for i, b in enumerate(B):
if D[i] > 0: # 只有允许分配次数大于0时才进行分配
current_combination[index] = b
D[i] -= 1 # 分配一次后减少允许分配次数
generate_combinations_with_constraints(A, B, D, index + 1, current_combination, result)
D[i] += 1 # 回溯时恢复允许分配次数
print(current_combination)
def generate_combinations_with_constraints(A, B, D, index, current_combination, result):
if index == len(A):
result.append(current_combination.copy())
return
for i, b in enumerate(B):
if D[i] > 0: # 只有允许分配次数大于0时才进行分配
current_combination[index] = b
D[i] -= 1 # 分配一次后减少允许分配次数
generate_combinations_with_constraints(A, B, D, index + 1, current_combination, result)
D[i] += 1 # 回溯时恢复允许分配次数
print(current_combination)