Chủ Nhật, 21 tháng 7, 2019

Bài 26 - Giải thuật nhập môn

Cho bảng n * n, hãy sắp xếp n * n chữ cái sao cho trên mỗi dòng cũng như mỗi cột, mỗi chữ cái đó chỉ xuất hiện đúng 1 lần.
Ví dụ:
- Nhập n = 4:
A  B  C  D
B  C  D  A
C  D  A  B
D  A  B  C

1 nhận xét:

  1. Uses crt;
    Var n,i,j:longint;
    f:array[-1..100,-1..100] of char;
    procedure s1(a,b,c,d:integer);
    Begin
    If d=n then Begin c:=c+1; d:=0; end;
    If f[a-1,b+1]='0' then
    Begin
    f[a-1,b+1]:=chr(64+c);
    d:=d+1;
    s1(a-1,b+1,c,d);
    end
    else If (f[a-1,b+1]='1')and(b+1>n) then s1(a+1,0,c,d)
    else If (f[a-1,b+1]='1')and(a-1<1) then s1(n+1,b,c,d)
    else If (f[a-1,b+1]<>'1')and(f[a-1,b+1]<>'0') then s1(a,b+1,c,d);
    end;
    Begin
    readln(n);
    fillchar(f,sizeof(f),'1');
    For i:=1 to n do
    For j:=1 to n do
    f[i,j]:='0';
    s1(2,0,1,0);
    For i:=1 to n do
    Begin
    For j:=1 to n do
    Write(f[i,j]:4);
    Writeln;
    end;
    readln;
    end.

    Trả lờiXóa

Dùng nick gmail để bình luận. Nếu lần đầu tiên bạn làm điều này thì hệ thống sẽ chuyển bạn sang trang blogger và hỏi bạn chọn tên hiển thị là gì. Bạn hãy nhập tên hiển thị rồi ok là được. Những lần bình luận sau hệ thống sẽ không hỏi nữa. Cảm ơn!

Bài được xem nhiều nhất