Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc oko jednog " jednostavnog zadatka"

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pomoc oko jednog " jednostavnog zadatka"

[ Pregleda: 1837 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

miki_infinity
::Ucenik::
Nis,Serbia

Član broj: 290532
Poruke: 1
*.dynamic.isp.telekom.rs.



Profil

icon Pomoc oko jednog " jednostavnog zadatka"15.09.2011. u 23:33 - pre 153 meseci
U pitanju je daleko od jednostavnog, program "moj broj".Jel ima neko uopste ideju kako poceti ovaj zadatak.Naime,program radi kao i onaj kod slagalice na rts 1,unosimo neki broj koji trebamo pronaci, zatim 4 jednocifrena, i neki od ovih (10-15-20-25),i ovih (25-50-75-100)?nebitno da li je c ili c++.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Pomoc oko jednog " jednostavnog zadatka"16.09.2011. u 09:23 - pre 153 meseci
Ovaj problem se rešava grubom silom, jer broj kombinacija nije preterano veliki. Svaki matematički izraz može se predstaviti kao stablo u kome su brojevi u listovima stabla, a operacije (+ - * /) u ostalim čvorovima. Prvi deo algoritma treba da bude generisanje svih mogućih različitih stabala koja nemaju više od šest listova (jer imaš maksimalno šest brojeva na raspolaganju). Drugi deo algoritma je da za svako takvo stablo treba provrtiš sve moguće kombinacije brojeva i operacija. Ako naletiš na traženi rezultat onda si pronašao i matematički izraz za njega. Povedi računa o tome da rezultat bilo kog deljenja mora uvek da bude ceo broj.

Prvih par stabala:

 1 *   2   *   3     *     4   *       5      *      
/ \ / \ / \ / \
* * * * * * * *
/ \ / \ / \ / \
* * * * * * * *


Pretpostavljam da je najlakše konstruisati stabla tako što uzmeš postojeće stablo i početni list i rekurzivno u petlji svakom listu počevši od datog početnog dodaš dve podgrane. Rekurzivno pozivaš funkciju generisanja stabla sa novim stablom i novim levim listom kao početnim. Ideja je da ne diraš listove koji su levo od datog početnog, jer si se njima bavio u prethodnim rekurzivnim pozivima funkcije. Ako iskoristiš ovu ideju onda će kao rezultat prvih par stabala biti:

 1 *   2   *   3     *     4       *       5      *
/ \ / \ / \ / \
* * * * * * * *
/ \ / \ / \
* * * * * *
/ \ / \
* * * *
/ \
* *


Kad funkcija dođe do 6 listova onda treba da pređe na komplikovanije oblike stabla.

Što se tiče popunjavanja stabla stvari su proste. Listove popunjavaš brojevima, i tu imaš varijacije bez ponavljanja. Ostale čvorove popunjavaš matematičkim operacijama i tu imaš varijacije sa ponavljanjem.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.3gnet.mts.telekom.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pomoc oko jednog " jednostavnog zadatka"16.09.2011. u 10:42 - pre 153 meseci
Zagrade?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Pomoc oko jednog " jednostavnog zadatka"16.09.2011. u 11:14 - pre 153 meseci
Najjednostavnije je staviti ih za svaku operaciju (svaki čvor), ali priznajem da je to malo nečitljivo. Optimizacija je već stvar kozmetike, pa cenim da prvo rešimo problem, a onda da se bavimo uklanjanjem viška zagrada.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.3gnet.mts.telekom.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pomoc oko jednog " jednostavnog zadatka"16.09.2011. u 11:26 - pre 153 meseci
Ok.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pomoc oko jednog " jednostavnog zadatka"

[ Pregleda: 1837 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.