Kezdőoldal » Számítástechnika » Programozás » Kombinatorikai programot hogy...

Kombinatorikai programot hogy oldanátok meg?

Figyelt kérdés

ha van 9 szám 1-9-ig


ezekből 5 jegyű számokat ki írni és el kell készíteni c++-ban úgy, hogy az 1 és a 2 szerepeljen bennük


Nekem már az értelmezéssel is bajom volt, mert matematikailag sem tudom kiszámolni, h hány verziója lehet

ilyen számokat kellene kiírni egy for ciklussal ami azt vizsgálja, h van köztük 1 és 2???

1 2 3 4 5

1 2 3 5 4

1 2 3 6 4

1 2 3 7 4

1 2 4 5 6

1 2 4 6 5

1 2 5 4 6

1 2 5 6 4



2016. dec. 18. 22:47
 1/6 anonim ***** válasza:
43%
Érdemes a feladatot nyelvtől függetlenül, "papíron" megoldani először, mintha csak matek házi csinálnál. Aztán a *megoldást*, az algoritmusodat kell leprogramozni, nem magát a feladatot.
2016. dec. 18. 22:50
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

Az a gond, h papíron se sikerül, annyira nem bonyolult, de azért mert rossz vagyok mateknak ebből a részéből (2 éve tanultam vsz számítást) infóból is szívatnak?


próbáltam úgy, h 2 alatt a 2 és ezt szorozni 7 alatt a 3mal, amit n!/n!(n-k)! amit még egy for ciklussal gondoltam megoldani, vagy a n!-ra van képlet faktoriálisra?

2016. dec. 18. 22:57
 3/6 anonim ***** válasza:
9%
Utána kell járni, meg kell érteni. Éppen ez a legfontosabb az egészben.
2016. dec. 18. 23:14
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

Mondjuk ha írsz egy programot, ami kigenerálja az összes számot, és csak a jókat írja ki (és számolja meg), azzal mi a baj?

Konkrétan nem kell hozzá érteni se a feladatot. (attól még jó, ha érted, de majd a program megszámolja helyetted)

2016. dec. 18. 23:55
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:
71%

Ez tipikusan olyan feladat amit nagyon sokféleképpen lehet megoldani. Én így kezdenék neki:


Tekintsünk el a számjegyek sorrendjétől, generáljuk számjegy halmazokat. Minden halmaz 5 elemű ami és ilyen formában írható fel:


{1, 2, x, y, z} ahol x=[3,7], y=[x+1,8], z=[y+1,9]


Ez 3 szimpla for ciklus és legeneráltuk az összes számjegy kombinációt (nincsenek duplák ha így adod meg).


Most nézzük a sorrendet:


Ahhoz hogy minden számjegyhalmazt minden sorrendbe felírjuk, csupán fel kell írnunk az összes permutációját. Permutációra van egy halom algoritmus.


A program ekkor így néz ki:


for x in 3..7

. for y in x+1..8

. . for z in y+1..9

. . . permutációk_kiírása(1, 2, x, y, z)


Most egy kis matek a lehetőségek számáról: az 1 és 2 fix, a maradék 3 helyre pedig kiválasztunk 7 számjegyből 3-at úgy hogy nincs ismétlődés és a sorrend nem számít. Ez ugyan az mint a lottó sorsolás, azaz egy mezei kombináció (7 alatt a 3). Majd ezt az 5 számot megpermutáljuk ami egy mezei permutáció (5!). Így a lehetőségek száma: (1 * 1 * C(7,3)) * P(5) = 7!/(3!*4!)*5! = 4200

2016. dec. 19. 00:27
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
Btw ha legenerálod az összes lehetőséget és utána szűrsz is rendben van mert azt nevezzük variációnak, így a lehetőségek száma 9!/4!=15120 ami még rendben van. Ezt leszűrve kapod meg a 4200 db megoldást. Nem szép de elfogadható.
2016. dec. 19. 00:32
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!