Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Liệt kê tất cả cách đặt n dấu ngoặc đóng và n dấu ngoạc mở đúng đắn

  1. #1
    Ngày gia nhập
    02 2012
    Bài viết
    5

    Mặc định Liệt kê tất cả cách đặt n dấu ngoặc đóng và n dấu ngoạc mở đúng đắn

    Mọi người giúp em tìm lỗi sai bài làm của em với
    liệt kê tất cả các cách khác nhau đặt n ngoặc đóng và n ngoặc mở đúng đắn (n<=10)
    Bài của em đây
    Code:
    const fi='ngoac.INP';
                fo='ngoac.OUT';
    var f:text;
        a:array[1..10] of char; // a là mảng lưu dấu ngoặc
        d1,d2: array[0..10] of longint; //d1 là mảng đếm ngoặc mở, d2 là mảng đếm ngoặc đóng
        n,i:integer;
    procedure kq;
    var i:integer;
    begin
      for i:=1 to (n+n) do write(f,a[i]);
      writeln(f);
    end;
    procedure lk(i :integer);
    var j:char;
    begin
      for j:='(' to')'do begin 
        a[i]:=j;
        if a[i]='(' then  begin  // nếu là ngoặc mở thì tăng biến đếm ngoặc mở, giữ nguyên biến đếm ngoặc đóng
          d2[i]:=d2[i-1];
          d1[i]:=d1[i-1]+1;
        end;
        if a[i]=')' then begin  // nếu là ngoặc đóng thì tăng biến đếm ngoặc đóng, giữ nguyên biến đếm ngoặc mở
          d1[i]:=d1[i-1];
          d2[i]:=d2[i-1]+1;
        end;
        if d2[i]>d1[i] then break; //nếu ngoặc đóng nhiều hơn ngoặc mở thì thoát khỏi vòng lặp
        if d1[i]>n then break;// nếu ngoặc mở nhiều hơn n thì thoát khỏi vòng lặp
        if i=(n+n) then kq else lk(i+1);
      end;
    end;
    begin
      assign(f,fi);reset(f);
      read(f,N);
      assign(f,fo);rewrite(f);
      fillchar(d1,sizeof(d1),0);
      fillchar(d2,sizeof(d2),0);
      lk(1);
      close(f);
    end.
    Đã được chỉnh sửa lần cuối bởi cotendn : 27-02-2012 lúc 05:57 PM.

  2. #2
    Ngày gia nhập
    02 2012
    Bài viết
    5

    Em nghĩ thuật toán đúng rồi, có người bảo em sai vị trí câu lệnh phần quay lui lk nhưng em chưa nhìn ra. Mọi người giúp giùm.

  3. #3
    Ngày gia nhập
    10 2007
    Bài viết
    12

    Thay các lệnh break bằng lệnh continue nhé

  4. #4
    Ngày gia nhập
    02 2012
    Bài viết
    5

    Chạy được rồi, thanks noname.cpp.

Các đề tài tương tự

  1. Bếp hồng ngoại Midea, bếp hồng ngoại Magic Bullet – Giải pháp tiết kiệm thời gian và năng lượng
    Gửi bởi docavn01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 20-10-2012, 11:38 AM
  2. Bài tập C Kiểm tra dãy n các dấu ngoặc là đúng hay sai?
    Gửi bởi thucuc1710 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 12-09-2012, 08:58 AM
  3. Làm thế nào để tự động đóng ngoặc trong Visual Studio
    Gửi bởi hoangldp trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 26-04-2012, 10:07 PM
  4. Xác định biểu thức dấu ngoặc nhập vào là đúng hay sai?
    Gửi bởi mp121209 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 06-10-2010, 10:36 AM
  5. Bài tập C Đếm số ngoặc mở và ngoặc đóng trong C
    Gửi bởi phucnd2002 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 05-10-2010, 09:46 AM

Quyền hạn của bạn

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