Az állatszelídítő 5 oroszlánt és 4 tigris akar kivezetni a porondra, de két tigris nem jöhet egymás után. Hányféleképpen állíthatja sorba az állatokat?
3 féle képpen:
T=tigris
O=oroszlán
TOTOTOTOO
OTOTOTOTO
OOTOTOTOT
Szerintem
legyen az adott minta:
TOTOTOT
ebbe a mintába kell betuszkolni még 2 oroszlánt... nekem ezek jöttek ki:
OOTOTOTOT
OTOOTOTOT
OTOTOOTOT
OTOTOTOOT
OTOTOTOTO
TOOOTOTOT
TOOTOOTOT
TOOTOTOOT
TOOTOTOTO
TOTOOOTOT
TOTOOTOOT
TOTOOTOTO
TOTOTOOOT
TOTOTOOTO
TOTOTOTOO
feladathoz kiegészítésként:
tigrisek : T1, T2, T3, T4
oroszlánok: O1, O2, O3, O4, O5
vagyis külön külön kéne őket venni..
O1,T1,O2,T2,O3,T3,O4,T4,O5
O1,T2,O2,T1,O3,T3,O4,T4,O5 .... Stb
a 4 tigris 4! = 24 sorrendben jöhet...
közéjük be kell rakni 3 oroszlánt az 5-ből, ezt 5! / 2! = 60 féle képpen tudjuk megtenni...
aztán a maradék 2 oroszlánt 15*2 féle képpen tudjuk berakni közéjük (számít az oroszlánok sorrendje)...
így 24 * 60 * 30 = 43200 az összes lehetőség... szerintem :)
tessék a C program amelyik kigenerálja az összes lehetőséget:
#include <stdio.h>
#define MAX 9
int main()
{
int x[MAX];
int i,j;
char *mapping[] = {"O1", "T1", "O2", "T2", "O3", "T3", "O4", "T4", "O5"};
i = 0;
x[i] = 0;
while (i >= 0) {
while (x[i] < MAX) {
x[i]++ ;
for (j = 0 ; j < i ; j++)
if (x[j] == x[i] || (x[j] % 2 == 0 && x[j+1] % 2 == 0))
break;
if (i == j) {
if (i == MAX - 1) {
for (j = 0 ; j < MAX - 1 ; j++) {
printf("%s ", mapping[x[j]-1]);
}
printf ("%s\n", mapping[x[MAX-1]-1]);
}
else {
i++;
x[i] = 0;
}
}
}
i--;
}
return 0;
}
Pfúj de undi kód :D
Mindenesetre jobb lett volna ha valami online c++ fordítós linket adsz hozzá, ahol rögtön le lehet futtatni, meg, mondjuk megmarad a formázás. (epszilonnal több munka, lényegesen hasznosabb 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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!