Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Sume (problema semne)  (Citit de 2207 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
the_godfather
Strain
*

Karma: -6
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« : Iulie 26, 2011, 17:45:16 »

Ma poate ajuta cineva va rog cu niste indicii pentru rezolvarea urmatoarei probleme:

Se da un numar natural n. Sa se insereze semnele + si - in expresia 1 ? 2 ? ... ? n astfel incat rezultatul obtinut prin evaluarea expresiei sa fie 0. Exemple: n=3 -> 1+2-3=0, n=4 -> 1-2-3+4=0, n->9 - imposibil. Indicatie: este nevoie de gasirea conditiei de existenta a solutiei si de o aranjare a semnelor (oricare, solutia nu este unica) care sa satisfaca enuntul.

Multumesc anticipat.
Memorat
MciprianM
Nu mai tace
*****

Karma: 87
Deconectat Deconectat

Mesaje: 324



Vezi Profilul
« Răspunde #1 : Iulie 26, 2011, 18:11:16 »

Fa un back care sa iti afiseze toate solutiile pt n de la 1 la 20 de exemplu si gaseste un pattern.
Memorat
the_godfather
Strain
*

Karma: -6
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #2 : Iulie 26, 2011, 18:14:51 »

Fa un back care sa iti afiseze toate solutiile pt n de la 1 la 20 de exemplu si gaseste un pattern.

Hmm, am sa incerc si lucrul asta Smile. Sper sa fie ceva pattern iin secventele de semne +/-, ca m-am tot gandit azi la niste solutii si am zis ca poate nu am nevoie de back.
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #3 : Iulie 26, 2011, 18:43:42 »

Ca sa existe solutie , ai nevoie ca suma lor sa fie divizibila cu 2.  n * (n + 1) / 2  se divide cu 2 inseamna ca n se divide cu 4 sau n + 1 se divide cu 4.
Daca n e divizibil cu 4 iei toate perechile i , n - i + 1 si le pui pe rand, alternativ, in multimea celor negative respectiv a celor pozitive.

1 2 3 4 5 6 7 8 :  (1, 8 ) (3, 6) cu plus , celelalte cu minus.

Daca n + 1 e divizibil cu 4 faci aceeasi chestie pentru primele n - 1 numere, si pe al n-lea il pui in multimea cu suma mai mica.

1 2 3 4 5 6 7

Alternativ, poti face knapsack in O(n ^ 3).
Memorat
the_godfather
Strain
*

Karma: -6
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #4 : Iulie 26, 2011, 19:42:53 »

Ca sa existe solutie , ai nevoie ca suma lor sa fie divizibila cu 2.  n * (n + 1) / 2  se divide cu 2 inseamna ca n se divide cu 4 sau n + 1 se divide cu 4.
Daca n e divizibil cu 4 iei toate perechile i , n - i + 1 si le pui pe rand, alternativ, in multimea celor negative respectiv a celor pozitive.

1 2 3 4 5 6 7 8 :  (1, 8 ) (3, 6) cu plus , celelalte cu minus.

Daca n + 1 e divizibil cu 4 faci aceeasi chestie pentru primele n - 1 numere, si pe al n-lea il pui in multimea cu suma mai mica.

1 2 3 4 5 6 7

Alternativ, poti face knapsack in O(n ^ 3).

Mersi mult, am gasit si un pattern pe pare si impare:
pare: + - pana la n/2 si apoi - + pana la n
impare: ++- si ramai cu o secventa para unde aplici patternul de la pare Very Happy
Memorat
MciprianM
Nu mai tace
*****

Karma: 87
Deconectat Deconectat

Mesaje: 324



Vezi Profilul
« Răspunde #5 : Iulie 26, 2011, 21:39:03 »

Sa nu uiti dupa ce gasesti un pattern cu back - sa il demonstrezi adevarat pt cazul general  Whistle
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines