Po pierwsze, pozwól mi powiedzieć, że to nie jest praca domowa (jestem studentem A-Level, to nic nie jest tak blisko rozwiązania problemu (to jest sposób harder)), ale bardziej problem próbuję wyskoczyć, aby poprawić moją logikę programowania.Tricky problem z programowaniem, który sprawia mi kłopot z obejrzeniem
Pomyślałem o scenariuszu, w którym istnieje tablica losowych liczb całkowitych, powiedzmy na przykład 10 liczb całkowitych. Użytkownik wprowadzi numer, na który chce się liczyć, a algorytm spróbuje ustalić, jakie liczby są potrzebne do zrobienia tej sumy. Na przykład, gdybym chciał zrobić sumę 44 z tej tablicy liczb całkowitych:
myIntegers = array(1, 5, 9, 3, 7, 12, 36, 22, 19, 63);
Wyjście będzie:
36 + 3 + 5 = 44
Albo coś w tym kierunku. Mam nadzieję, że wyrażę się jasno. Jako dodatkowy bonus chciałbym, aby algorytm wybrał jak najmniej liczb, aby uzyskać wymaganą sumę, lub podać błąd, jeśli suma nie może być wykonana z podanymi liczbami.
Pomyślałem o użyciu rekurencji i iteracji w tablicy, dodając liczby w kółko, aż suma zostanie spełniona lub minęła. Ale nie mogę zrozumieć, co zrobić, jeśli algorytm przejdzie obok sumy i musi być selektywny co do liczb do wyboru z tablicy.
Nie szukam kompletnego kodu lub kompletnego algorytmu, chcę tylko, abyś miał opinię na temat tego, jak powinienem to zrobić i być może podzielę się kilkoma wskazówkami lub czymś. Prawdopodobnie rozpocznę pracę nad dzisiejszym wieczorem. : P
Jak powiedziałem, nie zadanie domowe. Tylko ja chcę zrobić coś bardziej zaawansowanego.
Dziękujemy za pomoc, którą możesz zaoferować. :)
zobacz: http://en.wikipedia.org/wiki/Subset_sum_problem – codaddict
Miałem to w CS oczywiście. Wciąż myśl, że to praca domowa. ;) –
Gratulujemy rozwiązania problemu NP-complete na własną rękę! :) –