Я ищу алгоритм возврата на С#, который будет искать правильные числа из List<int>
, где сумма этих чисел ближе всего к X.
например: list={5,1,3,5}, X = 10 вывод должен быть (5,5) (5+5 ближе всего к 10) он не может быть (3,3,3,1), потому что я нельзя использовать номер более одного раза из List
. (если у нас есть две части из числа 3, мы можем использовать два раза)
например 2: list={4,1,3,4}, X=10 вывод должен быть {4,1,3} и {1,3,4}.
У меня есть такой код для запуска, но я не могу этого сделать; (Я знаю, что есть википедия о возврате и рюкзаке, но мне это не помогает)
static void BackTrack(int lvl, bool Van, int[] E)
{
int i = -1;
do
{
i++;
if (ft(lvl, i))
{
int k = 0;
while (k < szint && fk(E[i], E[k]))
{
k++;
}
if (k == szint)
{
E[k] = R[lvl,i];
if (lvl == E.Length - 1)
{
}
else
{
BackTrack(lvl + 1, Van, E);
}
}
}
}
while (i < E.Length - 1);
}
static bool fk(int nr, int nr2)
{
return (nr + nr2 <= 10);
}
static bool ft(int lvl, int nr)
{
return true;
}