Dominó Feladat

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

Dominó feladat

Tegyük le az összes dominót úgy, hogy csak az egyik irányba tehetünk és a dominókon az összes
lehetséges párosítás előfordul!

Specifikáció(alapfeladat átírása)
N a dominók száma
M(i) a dominók száma
H dominók halmaza (dominó = rekord(egyik, másik: egész))
S(j) a j. dominó
Mivel mindegyik Si a dominók sorozata, ezért nincs szükség indexelésre! :)

ft(i, S(Xi)) ≡ S(Xi-1).másik =S(Xi).egyik vagy S(Xi-1).másik =S(Xi ).masik


(az utoljára lerakott dominó második mezőjén lévő szám a most lerakandó
dominó valamelyik mezőjén lévő számmal)
f k(i, S(Xi), j, S(Xj)) ≡ nem((S(Xi).egyik =S(Xj ).egyik és S(Xi).másik =S(Xj ).masik) vagy
(S(Xi).egyik =S(Xj ).masik és S(Xi).másik =S(Xj ).egyik))
(korábban még nem választottam)
X(l) az l. lépésben az X(l). dominót kell lerakni
Algoritmus
Keresés (N,X,VAN)
I:=1: X(1..N):=(0,…,0)
Ciklus amíg I≥1 és I≤N
Jó_eset_keresés(N,X,I,MELYIK,VAN)
Ha VAN akkor X(I):=MELYIK : I:=I+1 [előre lép]
különben X(I):=0 : I:=I-1 [visszalép]
Ciklus vége
VAN:=(I>N)
Ha VAN akkor Ki: X()
Eljárás vége

Jó_eset_keresés (N,X,I,MELYIK,VAN)
MELYIK:=X(I)+1
Ciklus amíg MELYIK≤N és (Rossz_eset(X,I,MELYIK))
MELYIK:=MELYIK+1
Ciklus vége
VAN:=( MELYIK≤N)
Ha VAN és S(XI-1).másik <>S(MELYIK ).egyik akkor Fordit(MELYIK)
Eljárás vége

Rossz_eset(X,I,MELYIK): logikai
Ha (UtolsóhozIllik(I,MELYIK)) akkor Rossz_eset:=igaz
különben
L:=1
Ciklus amíg (L<I) és MELYIK<>X(L)
L:=L+1
Ciklus vége
Rossz_eset:=(L<I)
Elágazás vége
Függvény vége

UtolsóhozIllik(I,MELYIK: Egész) : Logikai


UtolsóhozIllik:=(I=1) vagy
S(X I-1) másik =S(MELYIK) egyik vagy
S(XI-1) másik =S(MELYIK ) masik
Függvény vége

You might also like