Hiển thị kết quả từ 1 đến 2 / 2
  1. #1
    Tham gia
    28-12-2008
    Bài viết
    9
    Like
    0
    Thanked 0 Times in 0 Posts

    Bài khó: Đường đi của robot

    Đường đi của robot
    Cho một bàng vuông (n n) ô (2<=n<=100) các ô ghi các số là 0 hoặc 1. Tìm đường đi của robot, từ góc trái trên xuống góc phải dưới theo nguyên tắc được dịch chuyển sang phải và xuống dưới sao cho các số trên đường đi tạo thành một số nhị phân có giá trị lớn nhất.
    Dữ liệu vào: ghi trong tệp tin văn bản Robot.inp gồm
    - Dòng đầu tiên ghi giá trị
    - N dòng tiếp theo, trên mỗi dòng ghi n số 0 hoặc 1 các số này cách nhau ít nhất 1 khoảng trống.
    Dữ liệu ra: Ghi vào tập tin văn bản robot.out gồm một số duy nhất là giá trị thập phân của số nhị phân được tạo thành ở trên.
    Ví dụ
    Robot.inp
    5
    1 0 1 1 0
    0 0 1 0 1
    0 0 1 0 1
    1 0 0 1 1
    1 1 0 1 0
    robot.out
    374
    Quote Quote

  2. #2
    Tham gia
    08-12-2010
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts

    Thông tin Trả lời bài tìm đường đi robot

    Theo mình thì bài này giải bằng quy hoạch động
    Mình code bài này bằng pascal bạn tham khảo thử nhé
    CONST fi='ROBOT.INP';
    fo='ROBOT.OUT';
    TYPE mang=ARRAY[0..100,0..100] OF STRING;
    VAR n:BYTE;
    f:TEXT;
    a:mang;
    PROCEDURE xuly(VAR a:mang);
    VAR i,j,t:BYTE;
    ch:CHAR;
    BEGIN
    FOR i:=1 TO n DO
    BEGIN
    a[1,i]:=#32;
    a[i,1]:=#32;
    END;
    FOR i:=1 TO n DO
    FOR j:=1 TO n DO
    BEGIN
    read(f,t);
    ch:=chr(ord('0')+t);
    IF a[i-1,j]>a[i,j-1] THEN a[i,j]:=a[i-1,j]+ch
    ELSE a[i,j]:=a[i,j-1]+ch;
    END;
    END;

    FUNCTION luythua(x,y:BYTE):INTEGER;
    VAR i:BYTE; temp:INTEGER;
    BEGIN
    temp:=1;
    IF y=0 THEN
    luythua:=1
    ELSE IF y=1 THEN
    luythua:=x
    ELSE
    BEGIN
    FOR i:=1 TO y DO
    temp:=temp*x;
    luythua:=temp;
    END;
    END;

    FUNCTION he10(s:STRING):LONGINT;
    VAR t,i,j:BYTE; temp:LONGINT;
    BEGIN
    t:=length(s); temp:=0;
    FOR i:=1 TO length(s) DO
    BEGIN
    t:=t-1;
    val(s[i],j);
    temp:=temp+j*luythua(2,t);
    END;
    he10:=temp;
    END;

    PROCEDURE docfile;
    BEGIN
    assign(f,fi);
    reset(f);
    readln(f,n);
    xuly(a);
    close(f);
    END;

    PROCEDURE ghifile; VAR i:BYTE;
    BEGIN
    assign(f,fo);
    rewrite(f); writeln(f,a[n,n]);
    write(f,he10(a[n,n]));
    close(f);
    END;
    BEGIN
    docfile;
    ghifile;
    END.

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •