Informatika gyűjtemény

Egy szinttel feljebb fg_dom.dpr

2004050607080910

NézetNyomtat

fg_dom.dpr (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
{$A+,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q+,R+,S-,T-,U+,V+,W+,X+,Y+,Z1}
{$MINSTACKSIZE $00004000}
{$MAXSTACKSIZE $00100000}
{$IMAGEBASE $00400000}
{$APPTYPE CONSOLE}

PROGRAM domino2;
USES SysUtils;
CONST
    ch = '';
    inputFile = 'DOMINO.BE'+ch;
    outputFile = 'DOMINO.KI'+ch;

TYPE
    matrix = ARRAY [0..9, 0..9] OF LONGINT;

VAR
    best, new: matrix;

PROCEDURE Init(VAR m: matrix);
VAR
    i, j: INTEGER;
BEGIN
    FOR i:= 0 TO 9 DO
        FOR j:= 0 TO 9 DO
            m[i, j]:= 0;
END; {Init}

PROCEDURE Add(a, b: BYTE; length: LONGINT);
BEGIN
    IF (length > new[a, b]) THEN
    BEGIN
        new[a, b]:= length;
        new[b, a]:= length;
    END;
END; {Add}

PROCEDURE Main;
VAR
    T: Text;
    N, I, opt: LONGINT;
    a, b: BYTE;

    j: BYTE;
BEGIN
    Init(best);
    Assign(T, inputFile);
    Reset(T);
    ReadLn(T, N);
    ReadLn(T, a, b);
    best[a, b]:= 1; best[b, a]:= 1;
    FOR i:= 1 TO N-1 DO
    BEGIN
        new:= best;

        ReadLn(T, a, b);

        FOR j:= 0 TO 9 DO
        BEGIN
            {illesztes az a-j domino sorhoz, ha letezik olyan}
            IF best[a, j] > 0 THEN Add(b, j, best[a, j]+1);
            {illesztes a b-j domino sorhoz, ha letezik olyan}
            IF best[b, j] > 0 THEN Add(a, j, best[b, j]+1);
        END;

        best:= new;
    END;
    Close(T);

    opt:= 0;
    {optimum kereses es kiiras}
    FOR a:= 0 TO 9 DO
        FOR b:= 0 TO 9 DO
            IF best[a, b] > opt THEN opt:= best[a, b];

    WriteLn('enyem    = ', opt);
END; {Main}

PROCEDURE Teszt;
VAR
    T: Text;
    a: LONGINT;
BEGIN
    Assign(T, outputFile);
    Reset(T);
    ReadLn(T, a);
    Close(T);

    WriteLn('hivatalos= ', a);
    ReadLn;
END; {Teszt}

BEGIN
    Main;
    Teszt;
END.
(Vissza)