Kezdőoldal » Számítástechnika » Programozás » Hány 3-al osztható szám lehet...

Hány 3-al osztható szám lehet a tömbben?

Figyelt kérdés

Olyan feladatot kaptam hogy van egy tömb pozitív egész számokkal és a következő műveletet hajthatom végre rajta:

Kiveszek két tetszőleges elemet a tömbből és az összegüket pedig beteszem a tömbbe.

Az a kérdés hogy a fenti művelet tetszőleges számú (0 is lehet) végrehajtása után maximum hány darab 3-al oszható szám lehet a tömbben.

Pl {1 2 3} a tömb akkor a megoldás 2 mert csinálhatok belőle {3 3}-at az 1 + 2 összeadásával.

Vagy {3 3 1 1 1 1}-nél 3 a megoldás mert először csinálhatok belőle {3 3 2 1 1}-et abból pedig {3 3 3 1}-et.


Azt találtam ki hogy végig megyek minden páron és ha az összegük 3-al osztható akkor növelem az eredményt a párt pedig beteszem egy setbe hogy többször ne használjam fel.

Itt a kódom: [link]

Ez pl az első példára jó megoldást ad de a másodikra már nem. Nem tudom hogy máshogy csináljam.



2020. aug. 20. 21:28
 1/5 tabaki ***** válasza:
77%

Nyomatékosan hangsúlyozva, hogy nem értek hozzá, és lehet, hogy egy tanult kolléga majd elküld érte a búsba:

Még nem néztem bele mélyebben, de gyanítom, hogy ennél összetettebb programra lesz szükség. Mivel az a cél, hogy minél több 3-mal osztható tömbelem legyen, szerintem az eleve oszthatókat alapból ki kellene venni, hiszen az összeadásuk csökkenti ezt a mennyiséget. Ennek megfelelően a többi szám esetén is törekedni kellene az összeadások számának csökkentésére, vagyis lehetőleg találni neki egy párt, amivel az oszthatóság teljesül. Végül a maradékból kéne minél kevesebb összeadással 3-mal osztható tömbelemeket készíteni, amíg lehet. Nekem egyelőre ez a végjáték tűnik a legkellemetlenebbnek, de a gyakorlatban kiderülhet, hogy nem is olyan ijesztő, csak én vagyok túl fáradt ahhoz, hogy átgondoljam.

Lehet, hogy a HashSet helyett én egyszerűen egy másik tömböt használnék a megtalált tömbelemek kigyűjtésére, az eredeti tömbben pedig nulláznám a helyüket, a végén pedig összeszámolnám a másik tömb nullánál nagyobb elemeit.

2020. aug. 20. 23:04
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
52%

A hárommal oszthatóakat békén hagyod.

Megszámolod mennyi olyan van ami 1-et, és mennyi olyan van ami 2-t ad maradékul.

Ha ez egyforma, akkor minden egyes maradékoshoz adsz egy kettes maradékost.

Ha különbözik, akkor a kisebbik mennyiséggel megcsinálod az előző műveletet. A nagyobbik mennyiségű maradékos számok ha több mint hárman vannak akkor hármasával összeadod.


hárommal_oszthatóak_a_végin = eleve_hárommal_oszthatóak + min(egyesmaradékosak, kettesmaradékosak) + floor(abs(egyesmaradékosak-kettesmaradékosak)/3)

2020. aug. 20. 23:39
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
0%
Megint Te? Minden egyes feladatot itt akarsz megoldatni? Egyáltalán ki adja ezeket neked a nyáron folyamatosan? Kérj tőle segítséget.
2020. aug. 21. 00:42
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

2-es ez nem jól működik de azért köszönöm a választ!

Egyesnek is.

Közben kaptam privátban jó megoldást.

2020. aug. 21. 07:11
 5/5 Progresszor ***** válasza:
100%
A 2-es megoldására mondanál egy ellenpéldát?
2020. aug. 21. 18:13
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!