Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Reviews hay rinh note 4, galaxy V được vi vu Hàn Quốc

Gameshow “Ai Là Triệu Phú” trên VTV đang chờ đón bạn – Tải ngay!

Bóc hộp và reviews

Mời anh em tham gia Vn-zoom support team

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tin tức công nghệ sản phẩm mới
kết quả từ 1 tới 10 trên 10
  1. #1
    cÒi lazy 3bi's Avatar
    cÒi lazy 3bi vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    May 2012
    Đến từ
    hà nội
    Bài
    20
    VZD
    84
    Cảm ơn
    3
    Điểm
    10/7 bài viết

    Default thắc mắc về thuật toán quay lui đệ quy cho bài toán con mã đi tuần

    cho mình hỏi,làm thế nào để con mã ghi nhớ được những bước đã đi và bỏ qua những bước đã đi oy,help me!!hjx...

  2. #2
    NgKi.TStarn's Avatar
    NgKi.TStarn vẫn chưa có mặt trong diễn đàn Búa Đá Đôi
    Tham gia
    Feb 2011
    Bài
    77
    VZD
    442
    Cảm ơn
    28
    Điểm
    14/9 bài viết

    Default

    Bạn nói rõ hơn đi. Có phải ai cũng biết con mã đi tuần là bài toán như thế nào.

  3. #3
    manh_ha285's Avatar
    manh_ha285 vẫn chưa có mặt trong diễn đàn Búa Đá
    Tham gia
    Jan 2010
    Bài
    52
    VZD
    376
    Cảm ơn
    0
    Điểm
    11/5 bài viết

    Default

    Lập trình về cờ à. Thuật toán sao? hỏi htpp://vinachess.com nhé! Nhưng mất tiền đấy
    Vì một hiện tại tốt đẹp cho một tương lai tươi sáng....
    ------------------------------------------------------------------

  4. #4
    cÒi lazy 3bi's Avatar
    cÒi lazy 3bi vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    May 2012
    Đến từ
    hà nội
    Bài
    20
    VZD
    84
    Cảm ơn
    3
    Điểm
    10/7 bài viết

    Default

    Trích NgKi.TStarn View Post
    Bạn nói rõ hơn đi. Có phải ai cũng biết con mã đi tuần là bài toán như thế nào.
    Mã đi tuần (hay hành trình của quân mã) là bài toán về việc di chuyển một quân mã trên bàn cờ vua ( 8 x 8). Quân mã được đặt ở một ô trên một bàn cờ trống nó phải di chuyển theo quy tắc của cờ vua để đi qua mỗi ô trên bàn cờ đúng một lần.
    Yêu cầu : Hãy chỉ ra các hành trình nếu có của con mã sao cho : con mã đi qua tất cả cá ô của bàn cờ,mỗi ô đi qua đúng 1 lần

  5. #5
    cÒi lazy 3bi's Avatar
    cÒi lazy 3bi vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    May 2012
    Đến từ
    hà nội
    Bài
    20
    VZD
    84
    Cảm ơn
    3
    Điểm
    10/7 bài viết

    Default

    Trích manh_ha285 View Post
    Lập trình về cờ à. Thuật toán sao? hỏi htpp://vinachess.com nhé! Nhưng mất tiền đấy
    hjx,sv làm j có tìn ạ.

  6. #6
    NgKi.TStarn's Avatar
    NgKi.TStarn vẫn chưa có mặt trong diễn đàn Búa Đá Đôi
    Tham gia
    Feb 2011
    Bài
    77
    VZD
    442
    Cảm ơn
    28
    Điểm
    14/9 bài viết

    Default

    Bài này yêu cầu viết bằng ngôn ngữ gì đấy??

  7. #7
    NgKi.TStarn's Avatar
    NgKi.TStarn vẫn chưa có mặt trong diễn đàn Búa Đá Đôi
    Tham gia
    Feb 2011
    Bài
    77
    VZD
    442
    Cảm ơn
    28
    Điểm
    14/9 bài viết

    Default

    Mình viết bằng Pascal nhé. Ngôn ngữ chắc ai cũng biết.
    Bạn chép vào notepad và lưu lại dưới tên *.pas là mở được bình thường.
    Cái này là code cho bàn cờ n x n và tọa độ điểm xuất phát nhập từ bàn phìm và xuất ra file text.

    Thuật toán: dùng thuật toán backtracking liệt kê tất cả đường đi của con mã. Khi đã đi qua tọa độ x,y thì giá trị a[x,y] sẽ nhận giá trị false để các bước sau con mã không đi lại nữa. Điều kiên kết thúc là khi con mã đã đi được bước thứ n^2.

    Bạn nên thử với n bé thôi, không thi nó chạy mệt nghỉ. Tất nhiên là với n=1,2,3,4 không có đường đi nên sẽ không in ra kết quả.

    Code:
    var a:array[1..20,1..20] of boolean;
        toadox,toadoy:array[1..400] of byte;    
        x,y,n:byte;
        fo:text;
    {---------------------------------------------------------------------------------------------}
    PROCEDURE khoitao;
    var i,j:byte;
    begin
    for i:=1 to n do
        for j:=1 to n do
            a[i,j]:=true;
    end;
    {---------------------------------------------------------------------------------------------}
    PROCEDURE inkq;
    var l:byte;
    begin
    for l:=1 to n*n do write(fo,'(',toadox[l],':',toadoy[l],') '); writeln(fo);
    end;
    {---------------------------------------------------------------------------------------------}
    PROCEDURE try(i,j,k:byte);
    begin
    toadox[k]:=i; toadoy[k]:=j;
    If k=(n*n) then inkq else
    begin
    If a[i-2,j-1]=true then
       begin
            a[i-2,j-1]:=false; try(i-2,j-1,k+1); a[i-2,j-1]:=true;
       end;
    If a[i-1,j-2]=true then
       begin
            a[i-1,j-2]:=false; try(i-1,j-2,k+1); a[i-1,j-2]:=true;
       end;
    If a[i+1,j-2]=true then
       begin
            a[i+1,j-2]:=false; try(i+1,j-2,k+1); a[i+1,j-2]:=true;
       end;
    if a[i+2,j-1]=true then
       begin
            a[i+2,j-1]:=false; try(i+2,j-1,k+1); a[i+2,j-1]:=true;
       end;
    If a[i+2,j+1]=true then
       begin
            a[i+2,j+1]:=false; try(i+2,j+1,k+1); a[i+2,j+1]:=true;
       end;
    If a[i+1,j+2]=true then
       begin
            a[i+1,j+2]:=false; try(i+1,j+2,k+1); a[i+1,j+2]:=true;
       end;
    If a[i-1,j+2]=true then
       begin
            a[i-1,j+2]:=false; try(i-1,j+2,k+1); a[i-1,j+2]:=true;
       end;
    If a[i-2,j+1]=true then
       begin
            a[i-2,j+1]:=false; try(i-2,j+1,k+1); a[i-2,j+1]:=true;
       end;
    end; end;
    {---------------------------------------------------------------------------------------------}
    BEGIN
    assign(fo,'MADITUAN.TXT'); rewrite(fo);
    write('Nhap ban co n x n: '); readln(n);
    khoitao;
    write('Nhap vi tri quan ma xuat phat: '); readln(x,y);
    a[x,y]:=false;
    try(x,y,1);
    close(fo);
    END.
    Đã test và chạy được. Thông cảm nếu có lỗi xảy ra.
    Thay đổi nội dung bởi NgKi.TStarn; 01-06-2012 lúc 22:34.

  8. Có 2 thành viên cảm ơn NgKi.TStarn cho bài viết này:
    cÒi lazy 3bi (01-06-2012), chinhngocpro (03-08-2012)

  9. #8
    NgKi.TStarn's Avatar
    NgKi.TStarn vẫn chưa có mặt trong diễn đàn Búa Đá Đôi
    Tham gia
    Feb 2011
    Bài
    77
    VZD
    442
    Cảm ơn
    28
    Điểm
    14/9 bài viết

    Default

    Muốn chương trình chỉ in ra 1 kết quả thì
    Code:
    PROCEDURE inkq;
    var l:byte;
    begin
    for l:=1 to n*n do write(fo,'(',toadox[l],':',toadoy[l],') '); writeln(fo);
    end;
    Sửa lại thành
    Code:
    PROCEDURE inkq;
    var l:byte;
    begin
    for l:=1 to n*n do write(fo,'(',toadox[l],':',toadoy[l],') '); writeln(fo); close(fo); halt; {in lết quả xong thì đóng file lại và dừng toàn bộ chương trình }
    end;
    Thay đổi nội dung bởi NgKi.TStarn; 01-06-2012 lúc 22:00.

  10. #9
    NgKi.TStarn's Avatar
    NgKi.TStarn vẫn chưa có mặt trong diễn đàn Búa Đá Đôi
    Tham gia
    Feb 2011
    Bài
    77
    VZD
    442
    Cảm ơn
    28
    Điểm
    14/9 bài viết

    Default

    Code này chạy với n=8 vị trí đẹp ( quân mã nằm trong góc) thì sẽ chạy nhanh còn vị trí xấu thì chờ nó chạy vậy.
    Thay đổi nội dung bởi NgKi.TStarn; 01-06-2012 lúc 22:32.

  11. #10
    cÒi lazy 3bi's Avatar
    cÒi lazy 3bi vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    May 2012
    Đến từ
    hà nội
    Bài
    20
    VZD
    84
    Cảm ơn
    3
    Điểm
    10/7 bài viết

    Default

    Trích NgKi.TStarn View Post
    Bài này yêu cầu viết bằng ngôn ngữ gì đấy??
    ngôn ngữ j cũng đx cậu ạ,nhưng t thích viết bằng C++.à,cậu cho t hỏi,m mô phỏng bài toán này trên đâu nhở,t k cần code naz,

 

 

Quyền sử dụng

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