Задача на рекурсию

158
13 февраля 2019, 06:50

Требуется с помощью рекурсии определить можно ли из массива 1..N, в котором лежать целые неотрицательные числа, получить сумму K. Никак не могу найти алгоритм для определения возможности получить число из суммы других чисел.

Answer 1

Не надо суммировать, вычитайте

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
READ ALSO
Как проверить файл что он открыт? [дубликат]

Как проверить файл что он открыт? [дубликат]

На данный вопрос уже ответили:

154
Отправка файлов в режиме multiple не хранит порядок

Отправка файлов в режиме multiple не хранит порядок

Создаю 5 полей upload для загрузки multiple файлов на сервер

156
Вызвать Dispose у разных объектов

Вызвать Dispose у разных объектов

Есть коллекция, которая содержит экземпляры объектовНекоторые из них реализуют интерфейс IDisposable

114
Ошибка парсинга через AngleSharp ArgumentOutOfRangeException

Ошибка парсинга через AngleSharp ArgumentOutOfRangeException

По нажатию кнопки вызывается метод

128