nie wiem co złożoność moją sugestią byłoby ale mam pomysł :)
Co można zrobić, to spróbować zmniejszyć element z głównej tablicy, które nie są w stanie przyczynić się dla Ciebie rozwiązanie Załóżmy elementów są -10, 5, 2, -2, 5,7 ,-5, 9,11,19
więc widać, że -10,9,11 and 19
są elementem
że nigdy nie odeszły być przydatna do sum 0
w przypadku
więc spróbuj usunąć -10,9,11, and 19
z głównej tablicy do tego, co można zrobić zrobić to
1) create two sub array from your main array
`positive {5,7,2,9,11,19}` and `negative {-10,-2,-5}`
2) remove element from positive array which does not satisfy condition
condition -> value should be construct from negative arrays element
or sum of its elements
ie.
5 = -5 //so keep it //don't consider the sign
7 = (-5 + -2) // keep
2 = -2 // keep
9 // cannot be construct using -10,-2,-5
same for all 11 and 19
3) remove element form negative array which does not satisfy condition
condition -> value should be construct from positive arrays element
or sum of its elements
i.e. -10 // cannot be construct so discard
-2 = 2 // keep
-5 = 5 // keep
więc w końcu masz tablicę, która zawiera -2, -5,5,5,17 utwórz wszystkie możliwe podrzędne jej formy i sprawdź sumę = 0
(Uwaga: jeśli twoja wejściowa tablica zawiera 0, dodaj wszystkie 0 w ostateczna array)
próbuję z http://www.geeksforgeeks.org/find-subarray-with-given-sum/ ale to nie robi rozwiąż moją sprawę. –
W pierwszym przykładzie {0} wygląda na powtarzalny. a także jedno może być {0,1, -1,0} –
poprawne, a {0} rozważane jest dwukrotne powielenie podzbioru. –