Требуется с помощью рекурсии определить можно ли из массива 1..N, в котором лежать целые неотрицательные числа, получить сумму K. Никак не могу найти алгоритм для определения возможности получить число из суммы других чисел.
Не надо суммировать, вычитайте
public bool CangetSumOfK(int[] data, int k, int index = 0)
{
if (k == 0) return true;
if (k < 0) return false;
if (index >= data.Length) return false;
return CangetSumOfK(data, k, index+1)
|| CangetSumOfK(data, k - data[index], index+1);
}
Как использовать
var data = new int[] {1, 2, 3, 4, 5, 6};
Console.WriteLine(CangetSumOfK(data, 11));
Console.WriteLine(CangetSumOfK(data, 110));
Вывод
True
False
Виртуальный выделенный сервер (VDS) становится отличным выбором
Создаю 5 полей upload для загрузки multiple файлов на сервер
Есть коллекция, которая содержит экземпляры объектовНекоторые из них реализуют интерфейс IDisposable