我假设有两个地方:-,-
。这些地方中的每一个都有最大限制。例如first place has max limit
3
和2nd place has max limit
7
。
我有其他2个号码totalmaxlimit
,其他号码是totalminlimit
。
Ex; totalmaxlimit = 6
totalminlimit = 3
我想编写一个代码,我可以在上面两个地方填充所有可能的排列和组合,使得三个位置的总和大于等于3且小于等于6。
Example:
3 0
3 1
2 0
2 1
2 4
Also,
2 6 will be wrong result because sum is greater than totalmaxlimit.
4 2 is also wrong as first place has max limit of 3.
任何语言的代码都没问题。提前谢谢。
答案 0 :(得分:0)
让我们假设:
1)这个地方由A,B坐标给出 2)你有一个总min(m)和一个totalMax(M) 3)规则是A,B和A + B应该> = m并且<= M 4)值的数量由等式M-m给出。 (例如,如果M = 10且m = 0,我们将有10个有效值。)
您可以使用公式P = n来获得排列! /(n-k)!其中N是值的数量,k是您可以拥有的有效数字。
因此,例如,如果m = 0,则M = 6:
排列=(0,6),(1,5),(2,4)等...
基本上你有(X_n,X_M)之和,当n增长时,M减小。 M = M - n
我希望这对现在有所帮助,但我可以提供更多&#39; profissional&#39;如果你喜欢的公式。语言可能是python,因为我觉得它会更容易。但首先你需要获得算法,将它传递给代码是微不足道的。
以下是代码:
def permutations(min, max):
# init variables
m = min
M = max
results = []
# main loop
for i in range(min, max):
for j in range(min, max):
if ((i + j) >= min and (i+j) <= max ):
results.append([i, j])
print(results)