Trang chủ Tin Học Lớp 8 Viết chương trình liệt kê tăng dần theo thứ tự...

Viết chương trình liệt kê tăng dần theo thứ tự từ điển các hoán vị của các số từ 1..N Input:tệp văn bản hoanvi.inp chứa số n,1<n<9 Output:tệp văn bản hoa

Câu hỏi :

Viết chương trình liệt kê tăng dần theo thứ tự từ điển các hoán vị của các số từ 1..N Input:tệp văn bản hoanvi.inp chứa số n,1<n<9 Output:tệp văn bản hoanvi.out,mỗi dòng là một hoán vị

Lời giải 1 :

uses crt;
var f:text; n,m,i,j,t:longint; b,c:array[1..100000000]of longint;
procedure print;
var i,j,d:longint;
begin
   d:=0;
   for i:=1 to n do 
      begin 
         j:=1;
         while (b[j]<>i)and(j<=n) do inc(j);
         if j=n+1 then d:=1;
      end;
   if d=0 then  
      begin 
         inc(m); 
         for i:=1 to n do 
            c[m]:=c[m]*10+b[i];
      end;
end;
function dequy(a:longint):longint;
var i:longint;
begin
   if a=n+1 then print else
         for i:=1 to n Do
            begin
               b[a]:=i;
               dequy(a+1);
            end;
end;
begin 
clrscr;
   assign(f,'hoanvi.inp');reset(f);
      readln(f,n); 
   close(f);
   assign(f,'hoanvi.out');rewrite(f);
      dequy(1);
      writeln;
      for i:=1 to m do 
         for j:=1 to i-1 do 
            if c[i]<c[j] then 
               begin
                  t:=c[i]; c[i]:=c[j]; c[j]:=t;
               end;
      for i:=1 to m do writeln(f,c[i],' ');
   close(f); 
end.

Thảo luận

-- hoanvi.inp với hoanvi.out anh ơi ;-;
-- à ok
-- for i:=1 to m do write(f,c[i],' '); chỗ này anh thêm writeln; ở cuối câu nhé vì mỗi dòng là 1 hoán vị mà
-- à a nhầm tí

Lời giải 2 :

program vct;
var n:byte;
    a:array[1..9] of byte;
    duyet:array[1..9] of boolean;
    f:text;
procedure xuat;
      var j:byte;
begin
  for j:=1 to n do write(f,a[j]);writeln(f);
end;
procedure try(i:byte);
      var ii:byte;
begin
  if i<=n then
    begin
      for ii:=1 to n do
        if duyet[ii]=true then
          begin
             a[i]:=ii;
             duyet[ii]:=false;
             try(i+1);
             duyet[ii]:=true;
          end;
    end
   else xuat;
end;
begin
   assign(f,'hoanvi.inp');reset(f);
   readln(f,n);
   close(f);
   assign(f,'hoanvi.out');rewrite(f);
   fillchar(duyet,sizeof(duyet),true);
   try(1);
   close(f);
end.

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần, sang năm lại là năm cuối cấp áp lực lớn dần nhưng các em vẫn phải chú ý sức khỏe nhé!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK