[123doc.vn] Bai Toan Duong Di Cua Robot Tao Thanh So Nhi Phan Lon Nhat Pptx

download [123doc.vn] Bai Toan Duong Di Cua Robot Tao Thanh So Nhi Phan Lon Nhat Pptx

of 5

Transcript of [123doc.vn] Bai Toan Duong Di Cua Robot Tao Thanh So Nhi Phan Lon Nhat Pptx

  • 8/10/2019 [123doc.vn] Bai Toan Duong Di Cua Robot Tao Thanh So Nhi Phan Lon Nhat Pptx

    1/5

    Bi ton ng i ca robot to thnh s nh phn ln nht

    Cho mtbng vung m dng, n ct (2

  • 8/10/2019 [123doc.vn] Bai Toan Duong Di Cua Robot Tao Thanh So Nhi Phan Lon Nhat Pptx

    2/5

    V d:

    Ta c s 1011 (gi tr thp phn l 11)+ Ghp thm s 1 vo s l 10111 (gi tr mi l 23 = 2*11+1)+ Ghp thm s 0 vo s l 10110 (gi tr mi l 22 = 2*11+0)

    Ti (i,j) ch c th n t (i-1, j) hoc (i, j-1), gi tr thu cl ln nhtth phi n t c gi tr ln hn,nh vy cng thc truy hi s l:

    F[i, j] = 2 * max( F[i, j-1], F[i-1, j] ) + A[i, j]

    2. Tnh bng phng n

    thun tin ta cn t hng ro: ct 0 v dng 0 ca c A v F u t gi tr -1.Ring A[1, 0] hoc A[0, 1] cn t gi tr 0 bt u tnh th F[1,1] = A[1, 1].

    3. Truy vt

    Bng th tc quy: Bt u t (m,n), qu trnh truy vt kt thc khi tatruy nn (1,1) v ra gi tr F[m,n], ti mi bc truy vtta s truy vt c gi tr lnhn trong 2 : (m-1,n) v (m,n-1).

    Ci t bng ngn ng Pascal:

    PROGRAM robot;

    VAR A:ARRAY[0..30,0..30] OF BYTE;

    F:ARRAY[0..30,0..30] OF LONGINT;

    m,n:INTEGER;

    PROCEDURE Enter;

    VAR i,j:INTEGER;

    BEGIN

    readln(m,n);

    FOR i:=1 TO m DO

    BEGINFOR j:=1 TO n DO read(A[i,j]);

    readln;

    END;

    FOR i:=0 TO m DO A[i,0]:=-1;

    FOR j:=0 TO n DO A[0,j]:=-1;

    END;

  • 8/10/2019 [123doc.vn] Bai Toan Duong Di Cua Robot Tao Thanh So Nhi Phan Lon Nhat Pptx

    3/5

    FUNCTION Max(a,b:LONGINT):LONGINT;

    BEGIN

    IF (a>b) THEN Max:=a ELSE Max:=b;

    END;

    PROCEDURE Optimize;

    VAR i,j:INTEGER;

    BEGIN

    FOR i:=0 TO m DO F[i,0]:=-1;

    FOR j:=0 TO n DO F[0,j]:=-1;

    F[0,1]:=0;

    FOR i:=1 TO m DO

    FOR j:=1 TO n DOF[i,j]:=2*Max(F[i,j-1],F[i-1,j])+A[i,j];

    END;

    PROCEDURE Trace(i,j:INTEGER);

    BEGIN

    IF (i=1) AND (j=1) THEN

    writeln(F[m,n])

    ELSE

    BEGIN

    IF F[i,j-1]>F[i-1,j] THEN

    Trace(i,j-1)

    ELSE

    Trace(i-1,j);

    writeln(i,' ',j);

    END;

    END;

    BEGIN

    Assign(Input,'Robot.inp'); Reset(Input);Assign(Output,'Robot.out'); Rewrite(Output);

    Enter;

    Optimize;

    Trace(m,n);

    close(Input);

  • 8/10/2019 [123doc.vn] Bai Toan Duong Di Cua Robot Tao Thanh So Nhi Phan Lon Nhat Pptx

    4/5

    close(Output);

    END.

    Ci t bng ngn ng C++

    #include

    #include

    using namespace std;

    int F[31][31],A[31][31],m,n;

    ofstream fo("robot.out");

    ifstream fi("robot.inp");

    void Enter()

    {

    fi>>m>>n;

    fi.ignore();

    int i,j;

    for (i=1; iA[i][j];

    fi.ignore();}

    for (i=0; i

  • 8/10/2019 [123doc.vn] Bai Toan Duong Di Cua Robot Tao Thanh So Nhi Phan Lon Nhat Pptx

    5/5

    F[1][0]=0;

    for (i=1; i