Gyakorlati alapok
A kínai mintacsalád ültetési rendje
A Totózzunk! című fejezet már bevezetett egy kis kombinatorikai gonoszkodást, ezt folytatjuk most tovább. Ugye a kínai mintacsalád a közismert túlnépesedés miatt 3 főből áll. Az ártatlan gyermek bármikor felteheti azt az egyszerűnek tűnő kérdést:
"Hányféleképpen ülhetünk egymás mellé mi hárman 1 sorban: anya, te és én?"
Ez valójában kombinatorikai kérdés, annak ismétlés nélküli permutációs változata, ahol 3 személyre 6 lehetséges ültetési rend létezik, mert 3! = 6.
Nézzük is meg Java-implementálását, amelyben a személyeket...
-
0 - gyermek,
-
1 - apa,
-
2 - anya.
...egész számok szimbolizálják.
3 db for ciklust kell felhasználnunk, ám egy fontos feltétellel:
if (i != j && j != k && i != k)
Ezáltal nem engedjük meg, hogy a különböző ciklusokból azonos számok választódjanak ki, például 000.
public class Main {
public static void main(String[] args) {
for (int i = 0; i <= 2; i++){
for (int j =
0; j <= 2; j++){
for (int k = 0; k <= 2; k++){
if (i != j && j != k && i != k){
System.out.println ("" + i + j + k + " ");
}
}
}
}
}
}
Végeredmény:
012
021
102
120
201
210
A feltétel megadása nélkül ismétléses variációba futunk bele, amely 3 elem variálását jelenti olyan módon, hogy már megengedett az elemek ismétlődése. Ekkor a végeredmény 27 db variáció lesz, mert 33 = 27.
public class Main {
public static void main(String[] args) {
for (int i = 0; i <= 2; i++){
for (int j =
0; j <= 2; j++){
for (int k = 0; k <= 2; k++){
System.out.println ("" + i + j + k + " ");
}
}
}
}
}
Végeredmény:
000
001
002
010
011
012
020
021
022
100
101
102
110
111
112
120
121
122
200
201
202
210
211
212
220
221
222