- Ebook Giải thuật và lập trình Lê Minh Hoàng
- Các thuật toán sắp xếp trong Pascal

Liệt kê dãy nhị phân cụm "01" xuất hiện đúng 2 lần



Đề bài: Hãy liệt kê dãy nhị phân độ dài n mà trong đó cụm "01" xuất hiện đúng 2 lần.

uses crt;
var s,n,j,i:integer;
a:Array[1..100] of integer;

{--------------------------}

Procedure print;
var j:integer;
begin
For j:=1 to n do write(a[j],' ');
writeln;
end;

{--------------------------}

Procedure Deq(i:integer);
 var j,k,d:integer;
  begin
   For j:=0 to 1 do
     begin
       d:=0;
       a[i]:=j;
       if i=n then
       For k:=1 to n do
         begin
          if (a[k]=0) and (a[k+1]=1) then inc(d);
          if d=2 then  print
         end
       else Deq(i+1);
      end;
  end;
{--------------------------}
Begin
 clrscr;
 write('Nhap n= ');readln(n);

Deq(1);
readln

end.


Unknown nói...

code có vấn đề các dãy nhị phân in ra lặp lại nhìu lần


lúc 08:53 20 tháng 1, 2013
Mr Kid nói...

lập trình chưa được tối ưu lắm! vẫn còn không hay lắm!
sao bạn không dùng 1 mảng 1 chiều xét xem ở vị trí i đó đã có mấy cái 01 rồi!
nếu bé hơn 2 thì làm tiếp!
còn lớn hơn 2 thì sẽ có điều kiện là nếu a[i] = 0 thì a[i+1] <> 0


lúc 22:32 16 tháng 3, 2013

Đăng nhận xét

Thành viên Blog

Tổng số lượt xem trang

Translate

Return to top of page Copyright © 2012 | Theme by Hack Tutors. Cung cấp bởi Blogger.
Các code pascal trong blog được sưu tầm, lựa chọn sao cho tối ưu nhất. Cảm ơn các tác giả đã viết thuật toán.