Mihajlo Cvetanović Beograd
Moderator Član broj: 37636 Poruke: 1263
|
A šta je jače, 3,2,2,1,1 ili 4,3,2,2,1? Isti tako, šta je jače, 3,3,3,1,1 ili 3,3,3,2,1? Takođe, šta je jače, 3,3,3,3,4, ili 3,3,3,5,2? Takođe, šta je jače, 3,3,3,2,1 ili 3,3,3,3,1? Obrati pažnju na poslednji slučaj, pitanje je kako se tretira četvrta trojka.
Ako je druga kombinacija jača u sva četiri slučaja onda sam skapirao. Za svaku kombinaciju treba da izbrojiš pojavljivanje svakog broja, i to da smestiš u poseban niz. Recimo za kombinaciju 3,3,3,2,1 napravio bi niz int count[7] = {0, 1, 1, 3, 0, 0, 0}; Dužina niza je sedam jer imaš brojeve od jedan do šest, ali prvi element niza prosto ignorišeš (da se ne bi smarao sa oduzimanjem indeksa za jedan). Kad formiraš niz count za obe kombinacije koje porediš (count1 i count2) onda kreneš od kraja niza, for (int x=6; x>0; x--), i porediš pojavljivanja pomoću sledeća tri pravila:
1) Ako je count1[x] > 2 ili count2[x] > 2, a onaj drugi nije veći od 2 onda imaš pobednika, i prekini dalje sa pretragom. Ako su oba veća od 2, ali jedan je veći od drugog, onda si pronašao najjaču pojedinačnu brojku (to ti je onaj četvrti primer s početka). Ako su oba veća od 2 i jednaka onda nastavljaš s petljom, ali od sad gledaš samo treću tačku (s trojkama i parovima si završio). Ako je od ranije u trećoj tački već dobijena najjača pojedinačna brojka onda već imaš pobednika, i prekini dalje s radom.
2) Ako je count1[x] == 2 ili count2[x] == 2 a onaj drugi je manji od 2 onda imaš pobednika, i prekini dalje sa pretragom. Ako su oba jednaka 2 onda gledaš dalje, ali samo prvu i treću tačku (s parovima si završio).
3) Ako do sada nije određena najjača pojedinačna brojka, i jedan od count1[x] i count2[x] je veći od drugog, onda zapamti koji je to veći, i u sledećim iteracijama ignoriši ovaj korak
Ako si završio petlju bez pobednika, ali si pronašao najjaču pojedinačnu brojku, onda imaš pobednika. Ako nema najjače pojedinačne brojke onda su dva niza istovetna.
|