Существует ли комбинация из K целых чисел, так что их сумма равна заданному числу? - PullRequest
8 голосов
/ 17 декабря 2011

Я потел над этим вопросом, на который меня попросили ответить (это технически домашняя работа).Я рассмотрел хеш-таблицу, но я застрял на точных особенностях, как я мог бы сделать эту работу

Вот вопрос:

Учитывая k наборов целых чисел A 1 , A 2 , .., A k общего размера O ( n ), вы должны определить, существует ли a 1 ϵ A 1 , a 2 ϵ A 2 , .., a k ϵ A k , так что a 1 + a 2 + .. + a k -1 = a к .Ваш алгоритм должен работать за время T k ( n ), где T k ( n) = O ( n k / 2 × log n ) для четных k иO ( n ( k + 1) / 2 ) для нечетных значений k .

Кто-нибудь может дать мне общее направление, чтобы я мог приблизиться к решению этого вопроса?

1 Ответ

9 голосов
/ 17 декабря 2011

Разделите наборы k на две группы. Для четного k обе группы имеют k / 2 множества в каждой. Для нечетного k одна группа имеет (k + 1) / 2, а другая имеет (k-1) / 2 набора. Вычислить все возможные суммы (взяв один элемент из каждого набора) в каждой группе. Для четного k вы получите два массива, каждый с n k / 2 элементами. Для нечетного k один массив имеет n (k + 1) / 2 , а другой массив имеет n (k-1) / 2 элементов. Задача сводится к стандартному: «Учитывая два массива, проверьте, можно ли достичь указанной суммы, взяв один элемент из каждого массива».

...