Loading...
achkata avatar achkata 17 Точки

[Homework] C# Conditional Statements {12} Zero Subset

Страхотна задача.

Ето, който иска да почете малко повече по въпроса.

http://en.wikipedia.org/wiki/Subset_sum_problem

Тук представям рекурсивно решение. Пропуснал съм частта с въвеждането на числата от конзолата, за 5-та седмица, предполагам това е тренирано вече от всички.

Има още едно интересно решение, с разделяне на положителни и отрицателни числа, то е по-лесно за направа, при него интересното е самия алгоритъм и идеята с разделяне на въведените числа.

Ето рекурсивно решение : тук

Mod Edit: Моля, спазвайте правилата на форума.

 

Тагове:
2
Programming Basics 07/12/2014 17:16:39
Filkolev avatar Filkolev 4482 Точки

Най-лесното решение на тази задача е с битова маска. Може да прочетеш повече за алгоритъма ТУК. Работиш с един масив, една битова маска и един цикъл, веднъж щом схванеш идеята логиката е много лесна и кодът доста кратък.

4
mitttt avatar mitttt 4 Точки

За тези, които са решили задачите с 32 if, и накрая дават else Console.WriteLine("no zero subset") - отпечатва го дори и след като има налични подмножества - накрая след резултатите.

0
AleksandurSeferinkin avatar AleksandurSeferinkin 333 Точки

Аз бих решил задачата по този начин!

Ключовият момент е да намериш всички възможни комбинации. Битовете имат едно свойство, което всъщност върши чудесна работа за тази цел.

0
21/01/2015 05:47:01
npaunov avatar npaunov 51 Точки

Аз я реших с три цикъла for (заедно с няколко вложени), които проверяват за 2, 3 и комбинация от 4 числа.

http://pastebin.com/txQcxsDs

ModEdit: Забранено е цитирането на повече от 15 реда код във форума.

2
01/08/2015 00:53:58
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.