Учитывая массив из n элементов длины, где каждый элемент обозначает установленный размер, определите количество способов, которыми вы можете выбрать K установленного размера.
условие: вы не можете выбрать более одного элемента из одного набора. Как решить эту проблему (любая программа)
Примеры:
Ввод:
n = 4
k = 3
{1,2,1,1} Each value represents number of elements in each set
Выход: 7
Example :
{1},{2,3},{4},{5}
{1,2,4}
{1,2,5}
{1,3,4}
{1,3,5}
{1,4,5}
{2,4,5}
{3,4,5}
Код i попробовал, но возвращает 10 значений, которые не соответствуют условию Какую ошибку я здесь сделал? они просто дали длину подмножества вместо фактического подмножества. Поэтому, основываясь на сумме всей длины подмножества, я формирую новый массив
count = 0
def printCombination(arr, n, r):
global count
data = [0]*r
combinationUtil(arr, data, 0,
n - 1, 0, r)
def combinationUtil(arr, data, start,
end, index, r):
global count
if (index == r):
for j in range(r):
print(data[j], end=" ")
print()
count += 1
return
i = start
while(i <= end and end - i + 1 >= r - index):
data[index] = arr[i]
combinationUtil(arr, data, i + 1,
end, index + 1, r)
i += 1
in_val = [1,2,1,1]
arr = list(range(1,sum(in_val)+1)) r = 3
n = len(arr)
printCombination(arr, n, r)
print(count)
. Можем ли мы решить эту задачу с помощью некоторой формулы с минимальным временем, вместо того, чтобы моделировать каждое подмножество и проходить через него. Пожалуйста, осветите это или дайте мне предложение продолжить.