Miért működik rosszul ez a program? C#
Nekem nem akarja ki írni az összes lehetséges kombinációt miért?
kettő és három szám esetében jól működik de négy esetében már nem.
itt a kód a pastebin pont com per után írjátok oda ezt:
g1MNebkf
Több elvi hiba is van ....
Itt nem kombinációról van szó, hanem permutációról.
Ebben az esetben az 5 betű ismétlés nélküli permutációjánál 120 lehetséges megoldás lesz, mert 5! (azaz 5 faktoriálisa)
Ha ez megvan, akkor lehet tovább gondolkodni...
Ezt a részt nem értem.
Mert 5! (azaz 5 faktoriálisa)
Igen kipróbáltam kijön az eredmény de nem értem,hogy miért jó ez így hiába tudom alkalmazni a képletet meg tudom,hogy mite használhatom de ez így nem jó hogy nem látom átt.
Ti hogyan tanuljátok meg hogy ez a képlet miért jó így ahogy?
Simán kombinatorikai alapok.
Van permutáció, kombináció, variáció.
A permutációnál azt vizsgáljuk, hogy a meglévő elemeket hányféle képen lehet sorba tenni.
(pl. ez a feladat)
A kombinációnál hányféleképpen lehet n különböző dologból kiválasztani k darabot
(pl. a Lottó húzás)
A variációnál hányféleképpen lehet n különböző dologból kiválasztani k darabot, ha számít a kiválasztás sorrendje
Mindegyiknek van ismétlés nélküli és ismétléses változata, attól függően, hogy az egyes elemek csak egyszer vagy többször is szerepelhetnek.
----------------------------------------
Ismétlés nélküli permutációnál a lehetséges esetek száma: P = n!
De lehetne ez az eset ismétlés nélküli variácó, amikor is 5 elemből 5 elemet variálunk, a sorrend számít, egy elemet csak egyszer használunk.
A képlete:
V = n! / (n-k)!
ami jelen esetben:
5! / (5-5)! = 5! / 1! = 5!
De ezt nem nekem kellene magyarázni, gondolom matek órán tanították már, de utána is lehet olvasni.
De képlet nélkül, józan paraszti ésszel is megoldható:
az első helyre bármelyik betűt választhatod az 5 közül, a második helyre a maradék 4-ből, a harmadikra a maradék 3-ból, a negyedikre a maradék 2-ből és a végén csak 1 marad, így összesen 5·4·3·2·1 = 120 féle megoldás lesz
A faktoriális kiszámításához:
static int Faktorialis(int n)
{
int fakt = 1;
for (int i = 2; i <= n; i++)
fakt *= i;
return fakt;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!