Hiển thị kết quả từ 1 đến 5 / 5
  1. #1
    Tham gia
    23-01-2011
    Bài viết
    45
    Like
    1
    Thanked 2 Times in 2 Posts

    Hấp dẫn đây ! bài toán kho an toàn.

    một nhà máy sản xuất vũ khí có nhiều kho hàng có lính canh gác. Các kho hàn và lính canh được thẻ hiện trên ma trận m hàng n cột. Kho hàng là 'kho an toàn' nếu xung quanh kho toàn là lính canh. lập trình và đưa ra vị trí kho an toàn.
    Dữ liệu vào: tệp ANTOAN.INp;
    - dòng đầu tiên ghi 2 số m, n nguyên(m,n<=100);
    - m dòng tiếp theo mỗi dòng có n số 0 hoặc 1 thể hiện kho hàng và lính canh (kho hàng:=0; lính canh:=1);
    - các số trên cùng 1 dòng cách nhau 1 dấu cách.
    kết quả: tệp ANYOAN.OUT;
    - Nếu có kho an toàn thì mỗi dòng ghi vị trí 1 kho
    - sau khi ghi hết vị trí các kho an toàn thì ghi có bao nhiêu kho an toàn ở dòng cuối cùng.
    - mỗi số trên cùng 1 hang ghi cách nhau 1 dấu cách.
    - không có kho an toàn thì ghi -1.
    VD:
    antoan.inp: 4 5 antoan.out: 2 2
    1 1 1 0 1 3 4
    1 0 1 1 1 2
    1 1 1 0 1
    0 0 1 1 1
    Quote Quote

  2. #2
    Tham gia
    05-08-2010
    Bài viết
    313
    Like
    9
    Thanked 73 Times in 69 Posts
    Bạn cứ duyệt tất cả các ô có giá trị 0 (không duyệt những ô ở cạnh) nếu xung quanh các ô đều là 1 thì ghi ra file antoan.out
    Code:
    assign(f,'antoan.out');
    rewrite(f);
    for i:=2 to n-1 do
        for j:=2 to n-1 do
            if (not a[i,j]) and a[i+1,j] and a[i-1,j] and a[i-1,j+1] and a[i-1,j-1] and a[i+1,j+1] and a[i+1,j-1] 
            and a[i,j-1] and a[i,j+1] then
                begin
                     k:=k+1;
                     writeln(f,i,' ',j);
                end;
    if k=0 then k:=-1;
    write(f,k);
    close(f)
    Trong đoạn code trên mình lưu trữ ma trận bằng biến boolean 1:true 0:false
    Được sửa bởi HGMinh95 lúc 10:48 ngày 30-03-2011

  3. #3
    Tham gia
    23-01-2011
    Bài viết
    45
    Like
    1
    Thanked 2 Times in 2 Posts

    eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

    bạn có thể viết cho mình toàn bộ đoạn code của bạn dk không. Đọc khó hiểu quá ah.

    [=========> Bổ sung bài viết <=========]

    bạn có thể chỉ mình cách gán các số liệu từ ma trận sang mảng 2 chiều được không?
    Được sửa bởi 1hakunamatata lúc 20:13 ngày 30-03-2011 Reason: Bổ sung bài viết

  4. #4
    Tham gia
    05-08-2010
    Bài viết
    313
    Like
    9
    Thanked 73 Times in 69 Posts
    Code:
    var f:text;
        a:array[1..100,1..100] of boolean;
        i,j,m,n:byte;
        k:integer;
    procedure Enter;
      var f:text;
          i,j:byte;
          c:byte;
      begin
           assign(f,'antoan.inp');
           reset(f);
           readln(f,m,n);
           for i:=1 to m do
               for j:=1 to n do
                   begin
                        read(f,c);
                        if c=1 then a[i,j]:=true else a[i,j]:=false;
                   end;
           close(f);
      end;
    begin
         k:=0;
         Enter;
         assign(f,'antoan.out');
         rewrite(f);
         for i:=2 to m-1 do
             for j:=2 to n-1 do
                 if (not a[i,j]) and a[i+1,j] and a[i-1,j] and a[i+1,j-1] and
                 a[i+1,j+1] and a[i-1,j-1] and a[i-1,j+1] and a[i,j-1] and
                 a[i,j+1] then
                     begin
                          writeln(f,i,' ',j);
                          k:=k+1;
                     end;
         if k=0 then k:=-1;
         write(f,k);
         close(f);
         readln
    end.
    Phần gán dữ liệu từ ma trận sang mảng 2 chiều ở thủ tục Enter
    Quote Được gửi bởi 1hakunamatata View Post
    bạn có thể viết cho mình toàn bộ đoạn code của bạn dk không. Đọc khó hiểu quá ah.
    Đọc toàn bộ code thì phải khó hiểu hơn chứ

  5. #5
    Tham gia
    23-01-2011
    Bài viết
    45
    Like
    1
    Thanked 2 Times in 2 Posts
    Quote Được gửi bởi HGMinh95 View Post
    Đọc toàn bộ code thì phải khó hiểu hơn chứ
    bat dau thay de~ hieu roi`.^^

    [=========> Bổ sung bài viết <=========]

    bạn đã check thuật toán chưa. mình chạy mà nó cứ ra -1 hoài
    Được sửa bởi 1hakunamatata lúc 15:09 ngày 02-04-2011 Reason: Bổ sung bài viết

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
  •