Как найти все возможные комбинации с повторениями без дубликатов? - PullRequest
0 голосов
/ 09 ноября 2019

Мне нужно найти все возможные комбинации, берущие k из n чисел с повторяющимися, без дубликатов. Например, число '[1, 2, 3]' с результатом 2 должно быть

1 1
1 2
1 3
2 3
2 2
3 3

Когда я вызываю основные функции, я объявляю только массив arr = [ 1 3 5 ] n = 3(size of arr) r = 2 Я получаю: " Outпамяти. Вероятной причиной является бесконечная рекурсия в программе.":

function combs(arr, n, r)
chosen = zeros(1, r+1, 'int8');
repeat(chosen, arr, 1, r, 1, n);
end

function repeat(chosen, arr, index, r, start, ends)
    if(index == r)
        for i = 1:r
           arr(chosen(i))
        end
    end
    for i = start:ends
        chosen(index) = i;
        repeat(chosen, arr, index, r, i, ends)
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...