C++: следующая_комбинация со структурой
Прежде чем я поместил свой код, я построил его на основе кода Томаса Дрейпера и благодаря Jarod42
Я объясню это на примере:
Let this data in txt file: where each integer numbers associated with probability
1 0.933 2 0.865 3 0.919 4 0.726
3 0.906 2 0.854 4 0.726
4 0.865 3 0.933 5 0.919
Let the use input threshold = 1.5
Я хочу применить (next_combination) к моим данным в цикле от k=1 до тех пор, пока не останется больше комбинации
Когда k =1, результат будет:
Первый шаг: сформировать весь набор размером 1, где частота элемента может быть представлена суммированием его вероятности.
{1}= 0.933
{2}= 0.865 + 0.854= 1.719
{3}= 0.919 + 0.906 + 0.933 = 2.758
{4}= 0.726 + 0.726 + 0.865 = 2.317
{5}= 0.919
Второй шаг: уши весь набор размера 1, который имеет частоту <порог ==> Мы стерли набор {1}, {5}. И сохраните удаленный элемент в другом наборе
Повторите шаги, когда k=2
Первый шаг: сгенерировать весь набор размером 2,
Мы проверяем, является ли сгенерированный набор надмножеством из набора, который был удален
мы знаем, что {1}, {5} уже стерты, поэтому нет необходимости создавать какие-либо надмножества, включая {1}, {5}
Остальной сгенерированный суперсет будет:
{2,3} = (0.865 * 0.919 ) + (0.906 * 0.854) = 1.56774
{2,4}= (0.865 * 0.726) + (0.854 * 0.726)= 1.247994
{3,4}= (0.919 * 0.726) + (0.906 * 0.726) + (0.865 *0.933)= 2.131995
Второй шаг: уши весь набор размера 2, который имеет частоту
Повторите шаги, когда k=3 Из предыдущего шага у нас есть только: {2,3} и {3,4} Новый сгенерированный набор будет
{2,3,4} = (0,865 * 0,919 * 0,726) + (0,906 * 0,854 * 0,726)= 1,138846434 <порог
Я сделал этот код ранее с вектором вектора целого числа, он дает мне правильный ответ, но худшее время. ( код)
здесь, где мне нужна помощь, я получил много ошибок, не могу с ними справиться, потому что я не знаю, как использовать next_combination с struct ( code)