例如,我有7个元素-A,B,C,D,F,G,H。对于每个元素,我都具有与某些其他元素(例如, AB-0,AC-3,AD-9,BC-5 ,下面列出了所有兼容性值。请记住, AB = BA 。我的问题是要使用哪种算法来组合组中的所有元素,以使它们的平均组合兼容性达到最大值。每个组至少应包含2个元素。 例如,对于给定的数据,组应为ACD,BG,FH,因为 (AC + CD + AD)/ 3 =(9 + 3 + 7)/ 3 = 6.333,BG = 8,FH = 9,这两个组具有最大的平均相容性值。
我认为可以将其表示为图形,但是出于可视化的原因,我在问题中使用了矩阵。
A B C D F G H
A * 0 3 9 6 0 2
B 0 * 5 1 2 8 0
C 3 5 * 7 1 2 2
D 9 1 7 * 0 2 3
F 6 2 1 0 * 4 9
G 0 8 2 2 4 * 7
H 2 0 2 3 9 7 *
答案 0 :(得分:-1)
如果您使用的是python,请使用内置函数itertools.combinations()
。
否则,您可以使用循环实现自己的生成组合功能。递归函数。
def printCombination(arr, n, r):
data = [0] * r
combinationUtil(arr, n, r, 0, data, 0)
def combinationUtil(arr, n, r, index, data, i):
if (index == r):
for j in range(r):
print(data[j], end = " ")
print()
return
if (i >= n):
return
data[index] = arr[i]
combinationUtil(arr, n, r, index + 1,
data, i + 1)
combinationUtil(arr, n, r, index,
data, i + 1)