Bài 2: Đội hình thi đấu điền kinh. Giải thi đấu điền kinh được tổ chức tại một sân vận động có N đường đua. Mỗi lượt thi đấu có N vận động viên có số

Bài 2: Đội hình thi đấu điền kinh.
Giải thi đấu điền kinh được tổ chức tại một sân vận động có N đường đua. Mỗi lượt thi đấu có N vận động viên có số áo khác nhau tham gia trên mỗi đường đua khác nhau.
Hãy nêu các cách sắp xếp và số lượng các cách sắp xếp các vận động viên tham gia thi đấu trong mỗi lượt đua.
Dữ liệu vào là tệp văn bản DIENKINH.INP có cấu trúc:
– Dòng đầu tiên ghi số N (2<=N<=7) - Dòng tiếp theo ghi N số là số áo của các vận động viên tham gia thi đấu trong 1 lượt đua nào đó, các số ghi cách nhau ít nhất là một kí tự trống. Số áo của mỗi vận động viên là 1 số không quá 3 chữ số. Dữ liệu ra là tệp văn bản DIENKINH.OUT liệt kê các cách sắp xếp các vận động viên tham gia lượt thi đấu đã nêu ở tệp dữ liệu vào. Mỗi cách sắp xếp ghi trên 1 dòng gồm N số áo của các vận động viên, các số ghi cách nhau ít nhất là 1 kí tự trống. Dòng cuối cùng của tệp ghi số lượng các cách sắp xếp. Ví dụ: Tệp DIENKINH.INP Tệp DIENKINH.OUT 3 5 10 4 5 10 4 5 4 10 10 5 4 10 4 5 4 5 10 4 10 5 6

0 bình luận về “Bài 2: Đội hình thi đấu điền kinh. Giải thi đấu điền kinh được tổ chức tại một sân vận động có N đường đua. Mỗi lượt thi đấu có N vận động viên có số”

  1. uses crt;
    var f:text; i,n:longint; a,b:array[1..10000000]of longint;
    procedure print;
    var i,d,j,kt:longint;
    begin
       d:=0;
       for i:=1 to n do 
          begin 
             kt:=0;
             for j:=1 to i-1 do if b[i]=b[j] then kt:=1;
             if kt=0 then inc(d);
          end;
       if d=n then 
          begin
             for i:=1 to n do write(f,a[b[i]],’ ‘);
             writeln(f); 
          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,’DIENKINH.INP‘);reset(f);
          readln(f,n); 
          for i:=1 to n do read(f,a[i]);
       close(f);
       assign(f,’DIENKINH.OUT‘);rewrite(f);
          dequy(1);
       close(f); 
    end.

    Bình luận
  2. var
       a,k:array[0..7] of word;
       duyet:array[0..7] of boolean;
       i,n:byte;
       dem:word;
       f:text;
    const fi=’DIENKINH.INP’;
    fo=’DIENKINH.OUT’;
    procedure xuat;
    var ii:byte;
    begin
        for ii:=1 to n do write(f,k[ii],’ ‘);writeln(f);inc(dem);
    end;
    procedure hoanvi(i:byte);
    var j:byte;
    begin
      if i<=n then
        for j:=1 to n do
           begin
               if duyet[j]=true then
                  begin
                      k[i]:=a[j];
                      duyet[j]:=false;
                      hoanvi(i+1);
                      duyet[j]:=true;
                  end;
           end
      else xuat;
    end;
    begin
        assign(f,fi);reset(f);
        readln(f,n);
        for i:=1 to n do read(f,a[i]);
        close(f);
        assign(f,fo);rewrite(f);
        fillchar(duyet,sizeof(duyet),true);
        hoanvi(1);
        writeln(f,dem);
        close(f);
    end.

    Bình luận

Viết một bình luận