Professional Documents
Culture Documents
M U
Trang 1
PHN 1. L THUYT T HP
I. S LC V T HP
- Khi nim
T hp nh l mt lnh vc ca ton hc ri rc, xut hin vo u th k 17.
L thuyt t hp c p dng trong nhiu lnh vc khc nhau: l thuyt s, hnh
hc hu hn, biu din nhm, i s khng giao hon, thng k xc xut,
L thuyt t hp gn lin vi vic nghin cu s phn b cc phn t vo cc tp
hp. Cc phn t l hu hn v vic phn b chng phi tha mn nhng iu kin
no ty theo yu cu ca cng vic (bi ton).
Mi cch phn b nh th c gi l mt cu hnh t hp (mt b cc phn t
no ).
- Cc bi ton thng gp
a) Bi ton m: C bao nhiu cu hnh tha mn iu kin nu?
Dng nh gi hiu qu cng vic nh: tnh xc xut ca 1 s kin, phc
tp ca mt thut ton.
b) Bi ton lit k: Lit k tt c cc cu hnh t hp c th c (cc phng
n)
Bi ton lit k lm nn, lm c s cho nhiu bi ton khc.
c) Bi ton ti u: Ch ra mt hoc mt s cu hnh tt nht theo mt ngha no
(c gi ln nht hay c gi nh nht), l bi ton ph bin trong cuc sng
d) Bi ton tn ti: C tn ti hay khng tn ti cu hnh tha mn iu kin
no ?
V d v bi ton hnh lc gic thn b chng hn
II. NHC LI L THUYT TP HP
1. Cc khi nim v k hiu
Tp hp k hiu bng ch ci ln A, B, , X, Y,
Nu x l phn t ca tp X ta vit x X
Trang 2
Tp A l tp con ca tp B x A x B, k hiu A B
Nu ng thi A B v B A th A = B
Mt tp gm n phn t gi l mt n-tp
Giao ca 2 tp hp A v B k hiu l A B: A B = {x | x A v x B}
Hp ca 2 tp hp A v B k hiu l A B: A B = {x | x A hoc x B}
A x B = {(a, b)| a A v b B}
III.
CC NGUYN L C BN
1. Nguyn l cng
V d 1: C 8 quyn sch v 6 quyn v khc nhau. Hi c bao nhiu cch chn
1 quyn trong cc quyn trn?
* Hd:
C 8 cch chn ra 1 quyn sch
C 6 cch chn ra 1 quyn v
Vi mi cch chn 1 quyn sch khng trng vi cch chn bt k mt quyn v
no v ngc li vi mi cch chn 1 quyn v khng trng vi cch chn bt k mt
quyn sch no
=>c 8 + 6 = 14 cch chn 1 quyn trong s cc quyn sch v v cho
* n gin
Gi s c m cch chn i tng x, c n cch chn i tng y v mi cch
chn i tng x khng trng vi bt k cch chn i tng y no v ngc li mi
cch chn i tng y khng trng vi bt k cch chn i tng x no th s c
m+n cch chn 1 trong cc i tng cho
* Nguyn l cng tng qut
Duyt cc cu hnh t hp v ng dng
Trang 3
Trang 4
Trang 5
GV a kq= 2n
V d 12: C bao nhiu tp con ca mt tp hp c n phn t A={a1, a2, .., an}?
* Hd v d 12:
Xt xu nh phn c n bt x1,x2, ,xn
S tng ng 1-1 gia 1 tp con ca tp hp A vi 1 dy nh phn di n.
Bi v:
nu bt xi = 1 tng ng vi vic c mt phn t ai trong tp con
nu bt xi = 0 tng ng vi vic khng c mt phn t ai trong tp con
Do , s tp con ca mt tp hp c n phn t ng bng s xu nh phn
di n = 2n
- Nguyn l b tr
Nu mt nhim v c 2 cng vic, 2 cng vic c th thc hin ng thi
Th s cch thc hin nhim v gm 2 cng vic bng tng s cch lm mi
cng vic tr i s cch lm ng thi c 2 cng vic.
V d 13: |A| = m v |B| = n
|A+B| = m + n - |A B|
V d 14: C bao nhiu xu nh phn di 8 tha mn c bt u bng 1 hoc
c 2 bt cui l 00?
* Hd v d 14:
+ Xu nh phn di 8 c bt u bng 1 l 1 b c dng: 1x2x3x4x5x6x7x8, vi
xi=(0,1) ==> c 27 = 128 xu tha mn
+ Xu nh phn di 8 c bt kt thc bng 00 l 1 b c dng: x 1x2x3x4x5x600
=> c 26 = 62 xu tha mn
+ Xu nh phn di 8 c bt va bt u bng 1, va kt thc bng 00 l 1 b
c dng: 1x2x3x4x5x600, ==> c 25 = 32 xu tha mn
Vy s xu tha mn bi l 128 + 64 32 = 160.
* Trng hp n gin: Cho 2 tp hp A v B (cha bit c ri nhau hay
khng).
Khi : N(A B) = N(A) + N(B) - N(A B)
* Trng hp tng qut: Cho m tp hu hn A1, A2, ..,Am. Khi :
N(A1A2A3...Am) = N1-N2+N3-....+(-1)m-1Nm
Duyt cc cu hnh t hp v ng dng
Trang 6
Trang 7
V d 16: Trong s 367 ngi, c bao nhiu ngi c cng ngy sinh?
Tl: 1
IV.
MT S CU HNH T HP THNG GP
1. Hon v
1. nh ngha: Mt hon v ca n phn t (n >= 1) l
mt cch sp th t n phn t .
V d1: Cho n=3 v cc phn t l {1,2,3} th cc hon v ca 3 phn t trn l:
(1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1)
V d 2: C 5 ngi xp hng, c chiu cao bng nhau. Hi c bao nhiu cch
xp 5 ngi thnh hng?
*Tng qut: Cho tp hp A c n phn t a1, a2, ,an. Mt hon v ca n phn t
ca tp hp A l mt b c n thnh phn (x1, x2, ,xn), xi A v xi <>xj
i,j=1,2,..,n, i<> j
2. S hon v ca n phn t k hiu l Pn
Ta c: Pn = n! = 1.2.3. .n
*Chng minh: Pn = n!
GV yu cu HS chng minh
Gi : S hon v ca n phn t ng bng s b (x1, x2, ,xn), xi A v xi<>xj
vi i <> j; ( i,j=1,2,..,n)
- Chnh hp lp chp k ca n phn t
a. nh ngha: Mt chnh hp lp chp k ca n phn t l mt b c th t
gm k thnh phn ly t n phn t cho, cc thnh phn c th c lp li.
(n>1, k>0)
V d 3: n=3, A = {1,2,3}. => cc chnh hp lp chp 2 ca 3 phn t trn: (1,1),
(1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3)
*Tng qut: Cho tp hp A c n phn t a1, a2,an.
Mt chnh hp lp chp k ca n phn t ca tp hp A l mt b gm k thnh
phn (x1, x2, ,xk), xi A, i=1,2,..,k
Trang 8
n!
(n k)!
n!
Trang 9
Trang 10
A kn = C kn . k!, => C kn =
n!
A kn
= k!(n k)! (PCM)
k!
n.(n 1)
2
C
k =0
k
n
= 2n
Trang 11
Trang 12
5. 1 0 0
2. 0 0 1
6. 1 0 1
3. 0 1 0
7. 1 1 0
4. 0 1 1
8. 1 1 1
Trang 13
Program Bai1;
var n, i: integer;
b: Array[1..20] of 0..1;
count : word;
stop : boolean;
Procedure init;
var i: integer;
Begin
Write('Do dai day nhi phan = '); readln(n);
for i := 1 to n do b[i] := 0;
stop := false;
count := 0;
End;
Procedure Next_Bit_String;
Var i: integer;
Begin
i:=n;
while (i>=1) and (b[i]=1) do
Begin
b[i] := 0;
i := i-1;
End;
if i < 1 then stop := True Else b[i] := 1;
End;
BEGIN
init;
While not (stop) do
Begin
count := count + 1;
Write(Count:5);
For i := 1 to n do Write(b[i]:2); writeln;
Next_Bit_String;
End;
Write('Bam phim Enter de thoat khoi Chuong trinh '); Readln;
END.
- Bi ton 2: Lit k cc tp con m phn t ca tp n phn t.
Bi ton c th pht biu nh sau: Cho tp hp Cho X = {1, 2, 3, .. , n}. Hy lit
k cc tp con c m phn t ca X. V d: X= {1, 2, 3, 4, 5}, m= 3. Cc tp con 3
phn t ca X l:
Trang 14
1. {1, 2, 3}
2. {1, 2, 4}
3. {1, 2, 5}
4. {1, 3, 4}
5. {1, 3, 5}
6. {1, 4, 5}
7. {2, 3, 4}
8. {2, 3, 5}
9. {2, 4, 5}
10. {3, 4, 5}
n, m,i : integer;
a: Array[1..20] of integer;
count: longint;
Trang 15
stop : boolean;
Procedure init;
Var i : integer;
Begin
Write('Moi nhap N '); Readln(n);
Write('Moi nhap M '); Readln(m);
For i:= 1 to m do a[i] := i;
stop := false;
count := 0;
End;
Procedure Next_Combination;
Var i, j: integer;
Begin
i := m;
while (i>0) and (a[i] = n-m+i) do i := i-1;
if i = 0 then stop := True
else
begin
a[i] := a[i]+1;
for j := i+1 to m do a[j] := a[i]+j-i;
end;
End;
BEGIN
init;
while not stop do
begin
count := count+1;
Write(count:5);
for i := 1 to m do write(a[i]:3); writeln;
Next_Combination;
Duyt cc cu hnh t hp v ng dng
Trang 16
end;
Write('Bam Enter de ket thuc '); Readln
End.
- Bi ton 3: Lit k cc hon v ca tp n phn t.
Bi ton c th pht biu nh sau: Cho X = {1, 2, 3, .. , n}. Hy lit k cc hon
v t n phn t ca X. V d vi n = 3 th cc hon v ca n l:
1. (1, 2, 3)
4. (2, 3, 1)
2. (1, 3, 2)
5. (3, 1, 2)
3. (2, 1, 3)
6. (3, 2, 1)
i ch aj vi ak;
a:array[1..100] of integer;
n,i: integer;
count: longint;
Trang 17
stop : Boolean;
Procedure init;
var i: integer;
Begin
Write('Moi nhap vao N '); Readln(n);
For i := 1 to N do a[i]:=i;
Stop := False;
Count := 0;
end;
Procedure next_Permution;
Var j,k,l,m:integer;
tg: integer;
Begin
j := n-1;
while (j >0) and (a[j] > a[j+1]) do dec(j);
if j = 0 then stop := True else
begin
k := n;
while a[j] > a[k] do dec(k);
tg := a[j];
a[j] := a[k];
a[k] := tg;
l := n;
m := j+1;
while l > m do
begin
tg := a[l];
a[l] := a[m];
a[m] := tg;
dec(l);
Duyt cc cu hnh t hp v ng dng
Trang 18
inc(m);
end;
end;
end;
BEGIN
init;
while not stop do
begin
inc(count); write(count,'. ');
For i := 1 to N do write(a[i]:3); writeln;
next_permution;
end;
Write('Bam Enter de ket thuc '); Readln;
END.
- Bi ton 4: Phn tch s nguyn dng N thnh tng cc s
nguyn khng m.
Bi ton c pht biu nh sau: Cho mt s nguyn dng N. Hy lit k cc
cch phn tch N thnh tng cc s nguyn khng m. V d vi N = 4, ta c th phn
tch thnh:
1. 4
2. 3 + 1
3. 2 + 2
4. 2 + 1 + 1
5. 1 + 1 + 1 + 1
Phn tch bi ton:
Ta c th thy ngay cu hnh u tin l: N v cu hnh cui cng l 1 1 1 1
(N ch s 1).
Cn xy dng thut ton t cu hnh ta tm c cu hnh tip theo. T cu
hnh a1, a2, , ak ta c th xy dng cu hnh tip theo vi quy tc sau:
- Tm i u tin sao cho ai 1 (i gim t k, k-1, 1)
- Thay ai = ai -1
Duyt cc cu hnh t hp v ng dng
Trang 19
Trang 20
inc(count);
Write(count,'. ');
For i := 1 to k do write(c[i]:3);
writeln;
End;
Procedure Next_Division;
Var i, j, r, s, d : integer;
Begin
i := k;
while (i>0) and (c[i] =1) do dec(i);
if i>0 then
begin
c[i] := c[i]-1;
d := k-i+1;
r := d div c[i];
s := d mod c[i];
k := i;
if r>0 then
begin
for j := i+1 to i+R do c[j]:=c[i];
k := k+r;
end;
if s>0 then
begin
k := k+1;
c[k] := s;
end;
end else stop := True;
End;
Procedure Division;
Var i: integer;
Begin
While not stop do
begin
result;
next_division;
end;
Write('Bam Enter de ket thuc '); Readln
End;
BEGIN
init;
Duyt cc cu hnh t hp v ng dng
Trang 21
division;
END.
Nh vy, vi mi bi ton nh trn, khi s dng phng php sinh vo gii
quyt chng ta thng gp kh khn nh sau: mt l vic xc nh cu hnh u tin
v cu hnh cui cng, hai l vic xc nh c quy tc t cu hnh ang c ta tm
ra c cu hnh tip theo (sinh ra cu hnh tip theo). Chnh v nguyn nhn m
phng php sinh khng c s dng rng ri vo gii quyt cc bi ton nh thut
ton quay lui, quy hoch ng, Phng php sinh ch c s dng vo gii quyt
mt s bi ton lit k cc cu hnh t hp n gin.
Trang 22
Hnh H1.
Gi D l tp hp cc phn t t 1 n n (n=3), trong tp hp D=(1,2,3) ln lt
ly cc gi tr X(x1, x2, x3) c mt hon v.
V d: HV(1,2,3); HV(2,3,1); HV(1,3,2)...
Ban u trong D, cc gi tr 1, 2 v 3 u sn sng.
Trang 23
(Bc 2.2)Ti y ta chn gi tr khc cho x2 trong D, chn x2=3 tho mn.
(Bc 1.2) Ta chn x1=2, trong cn D(1,3). Tip theo ta chn x2=1, trong cn
D(3) v cui cng chn x3=3. Tho mn l mt hon v X=213. Tip tc tm cc hon
v khc, li quay ngc tr li cho n khi tm c gi tr tho mn cho xi no .
H1-1
Trang 24
H1-3
Do vy ta phi t li hu 2.
du chm m
th hin v tr
c th t
trc
H1-4
H1-5
Trang 25
Hnh H1-6.
Trang 26
Khi to X, X tho P
Repeat
Repeat
If X tho Q then
Begin
If X tho Q then
Begin
Exit;
Exit;
[Li; tm cc nghim;]
[Li; tm cc nghim;]
End;
If Tm mt nc i Then Tin
Else Li;
End;
If Tm mt nc i Then Tin
Else Li;
Until False;
Until False;
Else Begin
Begin
Exit;
Exit;
Trang 27
End;
End;
Trang 28
Trang 29
Chnh hp lp
Trang 30
1:
2:
3:
4:
5:
6:
7:
8:
9:
1
1
1
2
2
2
3
3
3
1
2
3
1
2
3
1
2
3
Trang 31
Begin
d:=d+1;write(f,d:4,': ');
for i:=1 to k do write(f,' ',x[i]); writeln(f);
End;
procedure Try(i:integer);
Var j:integer;
Begin
for j:=1 to n do
if b[j] then
begin
x[i]:=j;
if i=k then Inkq
else try(i+1);
end;
End;
BEGIN
Init;
try(1);
close(f);
END.
2. Chnh hp khng lp
Pht biu: Mt chnh hp khng lp chp k ca n phn t l mt b c th t
gm k thnh phn khc nhau ly t n phn t cho (n>1, k>0, n>k).
Vd: n=3, k=2. Cc chnh hp khng lp chp 2 ca 3 phn t trn: (1,2), (1,3),
(2,1), (2,3), (3,1), (3,2)
Vd: n=4, k=3: cy lit k nh sau:
Trang 32
1:
2:
3:
4:
5:
6:
1
1
2
2
3
3
2
3
1
3
1
2
Trang 33
read(f,n,k);
close(f);
for i:=1 to n do b[i]:=true;
assign(f,fo);rewrite(f);
End;
Procedure Inkq;
var i:integer;
Begin
d:=d+1;write(f,d:4,': ');
for i:=1 to k do write(f,' ',x[i]); writeln(f);
End;
procedure Try(i:integer);
Var j:integer;
Begin
for j:=1 to n do
if b[j] then
begin
x[i]:=j;
b[j]:=false;
if i=k then Inkq
else try(i+1);
b[j]:=true;
end;
End;
BEGIN
Init;
Try(1);
close(f);
END.
Trang 34
begin
x[i]:=j;
if i=n then PrintResult
{tho Q}
else begin
b[j]:=false; {nh du dng}
Try(i+1);
b[j]:=true; {tr li trng thi c - gii phng}
end
end;
End;
Yu cu v d liu:
D liu vo: tp vn bn Hoanvi.inp cha s nguyn N
Duyt cc cu hnh t hp v ng dng
Trang 35
i:integer;
Begin
assign(f,fi);reset(f);
read(f,n);
for i:=1 to n do b[i]:=true;
close(f);
assign(f,fo);rewrite(f);
End;
Procedure PrintResult;
var
i:integer;
Begin
for i:=1 to n do write(f,' ',x[i]); writeln(f);
End;
procedure Try(i:integer);
Var
j:integer;
Begin
for j:=1 to n do
if b[j] then
begin
x[i]:=j;
if i=n then PrintResult
else begin
b[j]:=false;
try(i+1);
Duyt cc cu hnh t hp v ng dng
Trang 36
b[j]:=true;
end
end;
End;
BEGIN
Init;
Try(1);
Close(f);
END.
4. T hp
Pht biu: Mt t hp chp k ca n phn t l mt b khng k th t gm k
thnh phn khc nhau ly t n phn t cho, hai thnh phn bt k trong b phi
khc nhau. (n>1, k>0, n>k). Ni cch khc, mt t hp chp k ca n phn t l mt
tp con k phn t ca n.
V d 7: chp 3 ca 5 phn t
Trang 37
MaxN=100;
fi='tohopK_N.inp';{chua so N}
fo='tohopK_N.out';
var
x:=array[0..MaxN] of longint;
n,k,d:integer;
f:text;
Procedure Init;
Var i:integer;
Begin
assign(f,fi);reset(f);
Trang 38
read(f,n);
close(f);
assign(f,fo);rewrite(f);
x[0]:=0;
End;
Procedure PrintResult;
var i:integer;
Begin
d:=d+1;
write(f,d:4,': ');
for i:=1 to k do write(f,' ',x[i]);
writeln(f);
End;
procedure Try(i:integer);
Var j:integer;
Begin
for j:=x[i-1]+1 to n-k+i do {}
begin
x[i]:=j;
if i<k then try(i+1) else PrintResult;
end;
End;
BEGIN
Init;
for k:=1 to n do Try(1);
close(f);
END.
(Ch : Bn c hy tm hiu k cc bi ton trn trong phn ci t chng
trnh ti cc v tr c nh du nghin, m v cng c th cha nh du. V
Duyt cc cu hnh t hp v ng dng
Trang 39
Trang 40
Writeln(f);
End;
Trong li gi ca chng trnh chnh: Try(1);
6. Bi ton N qun hu.
Hng dn: xem li v d 2 phn 1
Cho bn c vua NxN, hy tm tt c cc cch t N qun hu ln bn c sao cho
khng qun no n c qun no.
Mi dng c t ng mt hu ng thi mi hu cng ch thuc v mt ct
nn ta quy nh mng mt chiu H cha v tr cc qun hu trn bn c, trong h[i]
l hu th i t hng i ct h[i] trn bn c.
Mi qun hu i c th c t trn ct j=1..n, c ngha l h[i]=j sao cho (i,j)
cha b hu no khng ch. kim sot iu ny theo lut c Hu n ngang, dc v
theo hai ng cho.
Mi hu c t trn mt hng i, nn khng cn kim tra hng. Ta s dng
mng c kim sot cc ct trn bn c, c[j]=true c ngha trn ct j cha t hu
no. Cc nm trn cng mt ng cho song song vi ng cho ph, u c
i+j=C1 (hng s) vi 2<=C1<=2n. Cc cng nm trn ng cho song song vi
ng ho chnh li c i-j=C2 vi 1n<=C1<=n-1. do vy kim sot 2 ng cho
ta dng 2 bin c1[i+j]=true, c2[i-j]=true nu (i,j) cha b hu no khng ch theo
ng cho.
Tm li nu c[i]=c1[i+j]=c2[i-j]=true th c th t hu i vo ct j.
D liu: Hau.inp cha kch thc bn c s nguyn n
Kt qu: Hau.out cc v tr hu trn tng bn c.
{Chng trnh xp n hu}
const MaxN=10;
Duyt cc cu hnh t hp v ng dng
Trang 41
fi='hau.inp';{chua so N}
fo='hau.out';
var
h:array[1..MaxN] of integer;
c:array[1..MaxN] of boolean;
c1:array[2..2*MaxN] of boolean;
c2:array[1-MaxN..MaxN+1] of boolean;
n:integer;
f:text;
procedure Init;
var i,j:integer;
Begin
assign(f,fi);reset(f);
read(f,n);
for i:=1 to n do c[i]:=true;
for i:=2 to 2*n do c1[i]:=true;
for i:=1-n to n+1 do c2[i]:=true;
close(f);
assign(f,fo);rewrite(f);
End;
Procedure PrintResult;
var i,j:integer;
Begin
writeln(f,'==========');
for i:=1 to n do begin
for j:=1 to n do if h[i]=j then write(f,'H') else write(f,'O');
writeln(f);
end;
writeln(f);
End;
Duyt cc cu hnh t hp v ng dng
Trang 42
procedure Try(i:integer);
Var j,k:integer;
Begin
for j:=1 to n do
if c[j] and c1[i+j] and c2[i-j] then
begin
h[i]:=j;
if i=n then PrintResult
else begin
c[j]:=false;c1[i+j]:=false;c2[i-j]:=false;
Try(i+1);
c[j]:=true;c1[i+j]:=true;c2[i-j]:=true;
end;
end;
End;
BEGIN
Init;
Try(1);
close(f);
END.
vi n=4, kt qu tp hau.out nh sau:
==========
OHOO
OOOH
HOOO
OOHO
==========
OOHO
HOOO
OOOH
Duyt cc cu hnh t hp v ng dng
Trang 43
OHOO
7. Bi ton Nga i tun
Pht biu bi ton
Cho bn c c n x n . Mt con nga c php i theo lut c vua, u
tin c t c ta x0 , y0 . Hy ch ra cc hnh trnh (nu c) ca nga
l nga i qua tt c cc ca bn c, mi i qua ng mt ln .
Thit k thut ton
Cch gii quyt r rng l xt xem c th thc hin mt nc i k na hay
khng. S u tin c th pht tho nh sau :
Procedure Try(i);
Begin
for ( j = 1 k)
If ( xi chp nhn c kh nng k)
begin
Xc nh xi theo kh nng k;
Ghi nhn trng thi mi;
if( i < n2 ) Try(i+1)
else Ghi nhn nghim;
r li trng thi c cho bi ton;
end;
End;
m t chi tit thut ton, ta phi qui nh cch m t d liu v cc thao tc,
l :
Biu din bn c .
Cc kh nng ch la cho xi ?
Cch thc xc nh xi theo j.
Cch thc gi nhn trng thi mi, tr v trng thi c.
Ghi nhn nghim.
. . .
Ta s biu din bn c bng 1 ma trn vung cp n : int Ma[n][n];
Trang 44
( 8 bc i c th c ca con nga )
Mt phng php n gin c c u, v t x, y l ta dng 2 mng a v b lu
tr cc sai bit v ta .Nu ta dng mt ch s k nh s bc i k th chi
tit c th hin bi : u = x +a[k]; v = y + b[k]; k=0..7 .
iu kin chp nhn c c th c biu din nh kt hp ca cc iu kin
:
mi phi thuc bn c (1u n v
Ma[u,v] = 0;
Output Ma;
Procedure Try(i, x, y:integer);
Duyt cc cu hnh t hp v ng dng
Trang 45
Var u,v,k:integer;
Begin
For k = 1 to 8 do
Begin
u = x + a[k];
v = y + b[k];
if (1 <= u )and(v <= n)and(Ma[u][v] == 0) then
begin
Ma[u][v] = i;
if (i <= n*n) then Try(i+1,u,v)
else PrintH();
end;
Ma[u][v] = 0;
End;
End;
Th tc ny xut tt c cc li gii, nu c.
Th tc qui c khi ng bng mt lnh gi cc ta u [x0][y0] l tham
s. xut pht c tr 1, cn cc khc c nh du cn trng.
Ma[x0][y0] = 1; Try(2,x0, y0);
Cc mng a v b c th khi u nh sau :
int a[8]= {2,1,-1,-2,-2,-1,1,2};
int b[8]= {1,2,2,1,-1,-2,-2,-1};
Cc li gii sau l mt s kt qu cho t thut ton trn :
n=5 x=1 y=1
1
6
15 10 21
14 9
20 5
16
19 2
7
22 11
8
13 24 17 4
25 18 3
12 23
Vi n = 5, cc ta xut pht sau khng c li gii : (2,3), (3,2)...
Ci t chng trnh
{Duong di cua QuanMa tren ban co vua, moi o di qua 1 lan}
Duyt cc cu hnh t hp v ng dng
Trang 46
Usescrt;
Const MaxN=10;
fi='quanma.inp';{n/x y}
fo='quanma.out';
a:array[1..8] of integer=(2,1,-1,-2,-2,-1,1,2);
b:array[1..8] of integer=(1,2,2,1,-1,-2,-2,-1);
Var
n,d,x,y,u,v:integer;
ma:array[1..MaxN,1..MaxN] of integer;{thu tu quan ma}
f:text;
Procedure Init;
Var i,j:integer;
Begin
assign(f,fi);reset(f);
readln(f,n); read(f,x);read(f,y);
for i:=1 to n do for j:=1 to n do ma[i,j]:=0;
ma[x,y]:=1;
close(f);
assign(f,fo);rewrite(f);d:=0;
End;
Procedure PrintResult;
Var i,j:integer;
Begin
d:=d+1;
writeln(f,'=====',d,'=====');
for i:=1 to n do begin
for j:=1 to n do write(f,ma[i,j]:2,'.');
writeln(f);
end;
writeln(f);
Duyt cc cu hnh t hp v ng dng
Trang 47
End;
Procedure Try(i:integer;x,y:integer);
Var j,k,u,v:integer;
Begin
for j:=1 to 8 do
begin
u:=x+a[j];
v:=y+b[j];
if (ma[u,v]=0)and(u>=1)and(u<=n)and(v>=1)and(v<=n) then
begin
ma[u,v]:=i;
if i=n*n then PrintResult
else Try(i+1,u,v);
ma[u,v]:=0;
end;
end;
End;
BEGIN
Init;
Try(2,x,y);
Close(f);
END.
8. M cung (later)
Quay lui l ban u ta tin, tin v tin cho n khi khng tin c na th
lui v lui cho n khi c ng i mi, ta li tin v tin li lui, lui cho n khi ht
ng lui. Ht vic!
Trang 48
P
P1
P11
P2
P3
P14
P12
Trang 49
Trang 50
end;
until kt;
2. Cc tc gi khc
ThS.Trn c Huyn. Phng php gii cc bi ton trong Tin hc. NXBGD.
2004.
Nguyn Xun Huy. Sng to trong thut ton v lp trng. NXBGD. 2007.
Trang 51
Trang 52
CAITUI.OUT
15
10
Phn tch:
a
i =1
* xi < b
Trang 53
c
i =1
* xi
Kt lun:
Bi ton ci ti l mt bi ton ti u t hp: Tm Max{f(x)| xD}, vi D={x|
x=(x1,x2,,xn), xi = 0 hoc 1, i=1,2,,n; v g(x) < b}
V d 2: Bi ton thu th
C n cng vic c nh s t 1 n n v c n th c nh s t 1 n n.
Mi cng vic i bit chi ph cn tr th j hon thnh cng vic ny l c[i,j],
vi i,j = 1,2,3,..,n.
Yu cu: Hy tm phng n thu th vi tng chi ph phi tr l nh nht sao
cho cc cng vic u hon thnh, bit rng mi th ch thc hin mt cng vic v
mi vic ch do mt th thc hin.
D liu: Vo t file vn bn THUETHO.INP c dng
Dng u ghi s n. (N <= 100)
n dng tip theo, mi dng i ghi n s c[i,j], j = 1,2,n tng ng l chi ph
cn tr th j hon thnh cng vic i (i = 1,2,,n).
Kt qu: Ghi ra file vn bn THUETHO.OUT gm:
Dng u ghi tng chi ph thu th.
Dng th 2 ghi n s, trong s th i (i=1,2,..n) l s hiu ca th thc hin
cng vic i.
V d:
THUETHO.INP
5
4
8 17
19
12 6 17
19
8
19 19 7
17 9
17 3
7
16 12 16
THUETHO.OUT
32
1 2 5 4 3
7
10
7
7
8
*Phn tch:
Gi ca phng n: f(x) =
C[i, xi]
i
Trang 54
Trang 55
II.
1. T tng ch o
Ln lt duyt cc cu hnh ca bi ton. i vi mi cu hnh tho mn iu
kin ca bi ton (mi phng n ca bi ton) ta i tnh gi ca phng n . So
snh gi ca tt c cc phng n vi nhau tm ra phng n ti u v gi tr ti
u.
Trong qu trnh duyt ta lun gi li phng n tt hn. Phng n tt nht cho
n thi im ang duyt gi l phng n mu. Gi tr ca phng n mu gi l k
lc tm thi.
Khi duyt xong tt c cc phng n th s tm c phng n ti u v gi tr
ti u. Tuy nhin, trn thc t vi nhng bi ton c kch thc ln (s phng n
nhiu) th thi gian duyt lu dn n khng kh thi. Do , trong qu trnh duyt ta
nn hn ch bt php duyt (khng duyt cc phng n m ta bit chc chn rng
phng n khng th l phng n ti u ca bi ton).
C hai cch duyt:
Duyt ton b (vt cn)
Duyt hn ch (phng php duyt c nh gi nhnh cn)
- Cu trc ca phng php duyt tng qut
*Pht biu bi ton ti u t hp bng cch khc:
Tm MAX{f(x), x thuc D} hoc Tm MIN{f(x), x thuc D}
trong :
+) D = {x| x=(x1,x2, ..., xn) A1 A2 ... An ; x tho mn tnh cht P}
+) A1 , A2 ,... ,An l cc tp hu hn phn t.
+) Ai l tp gm cc kh nng c cho thnh phn xi
* Phng php duyt vit di dng m hnh quay lui c cu trc tng qut
nh sau:
Procedure
Khito;
begin
c d liu vo
Khi to cc gi tr ban u cho cc bin
end;
Duyt cc cu hnh t hp v ng dng
Trang 56
{}
Procedure Cp Nht K Lc;
begin
- <Tnh gi phng n nu cha tnh>
- Nu gi p/n > k lc (hocp/n > k lc) th
begin
k lc := gi p/n;
gi li p/n;
end;
end;
Procedure
Try(k : integer);
begin
for ak Ak do
if <chp nhn ak> then
begin
xk := ak;
<Tnh gi ca phng n b phn cp k;>
<Xc nh trng thi mi ca bi ton nu cn>
if k = n then Cp Nht K Lc
else try(k+1);
<Hon nguyn trng thi ca bi ton nu cn>
end;
end;
Procedure
Inkq;
begin
<in k lc v phng n ti u>
end;
BEGIN
Khito;
Try(1);
Duyt cc cu hnh t hp v ng dng
Trang 57
inkq;
END.
III.
BI TP P DNG
Bi 1: Cn thng bng
CAN.OUT
2 2 3
2 4 5
Trang 58
Trang 59
{------------------------------*****---------------------------}
procedure Sort;
var i,j,tg: integer;
begin
for i:=1 to n do cs[i]:=i;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[j]>a[i] then
begin
tg:=a[i];a[i]:=a[j];a[j]:=tg;
tg:=cs[i];cs[i]:=cs[j];cs[j]:=tg;
end;
tongtua[n]:=a[n];
for i:=n-1 downto 1 do tongtua[i]:=tongtua[i+1]+a[i];
end;
Procedure cnkl;
Begin
if d < min then
Begin
min := d;
kqd1 := d1;
kqd2 := d2;
kqx1 := x1;
kqx2 := x2;
End;
End;
Procedure try(i:integer);
var j:integer;
Begin
for j:=0 to 2 do
Begin
if j=1 then
Begin
inc(d1);
x1[d1] := i;
le :=le + a[i];
End;
if j=2 then
Begin
inc(d2);
x2[d2] := i;
Duyt cc cu hnh t hp v ng dng
Trang 60
ri := ri + a[i];
End;
d:=d1+d2;
if i=n then Begin if le=ri then cnkl; End
else if (d < min) and (abs(le - ri) <= tongtua[i + 1]) then try(i + 1);
if j=1 then
Begin
dec(d1);
le := le - a[i];
End;
if j=2 then
Begin
dec(d2);
ri := ri - a[i];
End;
d := d1 + d2;
end;
End;
Procedure result;
var i:integer;
Begin
assign(f,fo); rewrite(f);
write(f,kqd1,' ');
for i:=1 to kqd1 do write(f,cs[kqx1[i]],' ');
writeln(f);
write(f,kqd2,' ');
for i:=1 to kqd2 do write(f,cs[kqx2[i]],' ');
close(f);
End;
BEGIN
init;
sort;
try(1);
result;
END.
Cch 2: Dng thm tham s trong th tc Try
Mi qu cn c 3 kh nng la chn (hay cn gi l c 3 trng thi) c k hiu
l 1,0,-1, l: t a c vt (1), khng t vo a no (0), t a khng c vt
(-1);
Trang 61
Trang 62
begin
tg:=a[i];a[i]:=a[j];a[j]:=tg;
tg:=cs[i];cs[i]:=cs[j];cs[j]:=tg;
end;
ts[n]:=0;
for i:=n-1 downto 1 do ts[i]:=a[i+1]+ts[i+1];
end;
Procedure Try(i,s,d: integer);
{d l s qu cn dng n bc i-1 truyn li cho bc i}
var j: integer;
begin
for j:=1 downto -1 do
if d+abs(j)<min then {c th nh gi ngay ti y: nu thm 1 qu cn na
t vo a m khng tt hn k lc ca phng n mu th khng xy dng tip pa}
begin
t:=s-j*a[i];
if abs(t)<=ts[i] then { lch phi < tng cc qu cn cha chn}
begin
x[i]:=j;
if t=0 then
if d+abs(j)<min then
begin
min:=d+abs(j);
kqi:=i;
kqx:=x;
exit;
end;
if i<n then Try(i+1,t,d+abs(j));
end;
end;
end;
procedure Result;
var c1,c2,i: integer;
begin
assign(f,fout);rewrite(f);
if min=maxint then writeln(f,-1)
else
begin
c1:=0;c2:=0;
for i:=1 to kqi do
begin
Duyt cc cu hnh t hp v ng dng
Trang 63
Trang 64
V d:
LIC* HDH.INP
LIC* HDH.OUT
4 1 2 3 1
1 3 4 6 2 5
5 6 6 7 8
*Phn tch thut ton:
- Mt trnh t thc hin cc cng vic (mt phng n ca bi ton) l mt hon
v ca n phn t {1, 2, , n}.
C th: mi phng n l 1 b x = (x1, x2, ,xn); trong xi {1, 2, , n}, xi
<> xj nu i<>j;
- Gi ca phng n x (s cng vic ng hn) bng: f(x) = k
i
p < di vi mi i = 1,2, , k
Vi iu kin g(x) =
i
i =1
Bi ton lp lch ng hn a v bi ton: Tm Max{f(x)| xD},
vi D={x|x=(x1,x2,,xn), xi {1, 2, , n}, xi <> xj nu i<>j; v g(x) < di}
Vn bn chng trnh:
program LapLichUuTienDungHan;
uses crt;
const fin = 'LIC* HD.INP';
fout = 'LIC* HD.OUT';
maxn = 100;
var p,d,x,kqx : array[1..maxn] of integer;
cx,kqcx
: array[1..maxn] of boolean;
f
: text;
n
: integer;
tg,count,max: integer;
{----------------------------------------------------------}
procedure Init;
var i: integer;
begin
assign(f,fin);reset(f);
readln(f,n);
for i:=1 to n do read(f,p[i]);
readln(f);
for i:=1 to n do read(f,d[i]);
close(f);
Duyt cc cu hnh t hp v ng dng
Trang 65
fillchar(cx,sizeof(cx),true);
tg := 0; count:=0; max:=0;
end;
{----------------------------------------------------------}
procedure Try(i: integer);
var j: integer;
begin
for j:=1 to n do
begin
if cx[j] then
begin
x[i]:=j;
cx[j]:=false;
tg := tg + p[j];
if (tg <= d[j]) then inc(count);
if (i = n) then
begin
if count>max then
begin
max:=count;
kqx:=x;
end;
end
else if count+n-i>max then Try(i+1);
if tg <= d[j] then dec(count);
tg := tg - p[j];
cx[j]:=true;
end;
end;
end;
{---------------------------------------------------------}
procedure Result;
var i: integer;
j: integer;
begin
assign(f,fout);rewrite(f);
writeln(f,max);
for i:=1 to n do write(f,kqx[i],' ');
close(f);
end;
{----------------------------------------------------------}
Duyt cc cu hnh t hp v ng dng
Trang 66
BEGIN
Init;
Try(1);
Result;
END.
Bi 4 : Truyn tin
Ngi ta cn truyn n gi tin c nh s t 1 n n t mt im pht n mt
im thu. thc hin vic truyn tin c th s dng m ng truyn c nh s
t 1 n m. Bit rng nu truyn j gi tin theo ng truyn tin i th chi ph phi tr l
sij (sij l s nguyn dng, sij < 32767, i =1,2,..,m, j = 1,2,,n).
Yu cu: Hy xc nh s lng gi tin cn truyn theo mi ng truyn tin
vic truyn n gi tin c thc hin vi tng chi ph phi tr l nh nht.
D liu: Vo t file vn bn TTIN1.INP:
+ Dng u tin cha hai s nguyn dng n v m (n,m < 100) .
+ Dng th i trong s m dng tip theo cha n s nguyn dng si1, si2, .., sin ,
i=1,2,,m.
Kt qu: a ra file vn bn TTIN1.OUT:
+ Dng u tin cha S l tng chi ph phi tr theo cch truyn tin tm c.
+ Dng th hai cha m s nguyn khng m q1, q2, .. ,qm, trong qi l s gi tin
cn truyn theo ng truyn tin i.
V d:
TTIN1.INP
TTIN1.OUT
3 3
20
20 20
10
20
Bi 5 : Thu my
Mt trung tm c n my tnh (cu hnh ging nhau) dng cho thu trong thng
(t ngy 1 n ngy 31), thi gian thu tnh theo n v ngy. u thng, trung tm
nhn c yu cu ca m khch hng (nh s t 1 n m), mi khch hng cn thu
mt my trong mt s ngy no y thuc thng. Gi thit rng, i vi mi khch
hng, hoc trung tm t chi, hoc trung tm ng cho thu theo ng nh yu cu
ca khch. Vi mi ngy, gi tn s s dng my l s my tnh c s dng trong
Duyt cc cu hnh t hp v ng dng
Trang 67
THUEMAY.OUT
6
1 2 6 8 9 10
20
Bi 6 : Dy s
Cho dy s gm n s nguyn dng a1, a2, , an (n < 1000) v s nguyn dng
k (k < 50).
Yu cu: Tm dy con nhiu phn t nht ca dy cho v c tng cc phn t
chia ht cho k.
D liu: Vo t file vn bn DAYSO.INP gm:
+ Dng u tin cha hai s n, k c ghi cch nhau bi t nht mt du trng.
+ Cc dng tip theo cha cc s a1, a2, ,an c ghi cch nhau t nht mt du
trng hoc du xung dng.
Kt qu: Ghi ra file vn bn DAYSO.OUT
Duyt cc cu hnh t hp v ng dng
Trang 68
DAYCON.OUT
9
1
3
2
4
6
7
10
8
* Phn tch thut ton: Chia tng s hng ca dy cho k tm s d, tnh tng
cc s d. Sau tnh r := tngd mod k;
+ Nu r = 0 th kt lun ly c c dy
+ Ngc li: nu tm trong dy c 1 s chia cho k d r th ch cn loi s v
dy cn tm gm n-1 s cn li;
Nu khng ri vo 2 trng hp trn th th ta i tm cch loi i t nht cc
phn t tng cc s cn li chia ht cho k:
Trang 69
fo = 'DAYCON.OUT';
maxn = 10000;
maxk = 1000;
type
ksldu = array [0..maxk-1] of integer;
kad = array [1..maxn ] of integer;
kloai = array[1..maxn] of boolean;
kx
= array [1..maxk-1] of integer;
var
a
: kad;
du
: kad;{du[i] = j nghia la phan tu thu i chia cho k duoc so du la j}
sldu
: ksldu;{sldu[i] = j so luong cac so chia cho k du i la bang j}
loai
: kloai;
{danh dau cac chi so can loai bo}
x,kqx
: kx;
n, k, d
: integer;
min, tongdu, r,tdloai, slloai
: longint;
f
: Text;
procedure nhap;
var
inp: text;
i, t: integer;
begin
assign(f, fi); reset(f);
readln(f, n, k);
for i:=1 to n do read(f,a[i]);
close(f);
tongdu := 0;
for i:=1 to n do begin du[i] := a[i] mod k; tongdu:= tongdu+du[i]; end;
r := tongdu mod k;
assign(f,fo); rewrite(f);
end;
procedure XetDacBiet;
var
i, j: integer;
begin
if r=0 then
begin
writeln(f,n);
for i:=1 to n do
begin write(f,i:6); if (i mod 100) = 0 then writeln(f); end;
Duyt cc cu hnh t hp v ng dng
Trang 70
close(f);
halt;
end;
for i:=1 to n do loai[i] := false;
j :=0;
for i:=1 to n do if du[i] = r then
begin
loai[i] := true; j := i; break;
end;
if j>0 then
begin
writeln(f,n-1);
for i:=1 to n do
if not loai[i] then
begin write(f,i,' '); if (i mod 100) = 0then writeln(f); end;
close(f);
halt;
end;
end;
procedure try(i: integer);
var j : integer;
begin
for j:=0 to sldu[i] do
begin
x[i] := j; {ngha l: trong cc s chia cho k d i cn loi i j s}
slloai := slloai + j; {s lng s cn loi i}
tdloai := tdloai + i*j; {tng d ca cc s loi i}
if i = k-1 then
begin
if (tdloai mod k = r) and (slloai < min) then
begin
min := slloai;
kqx := x;
end;
end
else if slloai < min then try(i+1);
tdloai := tdloai - i*j;
slloai := slloai - j;
end;
end;
Procedure Tim;
Duyt cc cu hnh t hp v ng dng
Trang 71
var i: integer;
Begin
for i:=1 to k-1 do sldu[i] :=0;
for i:=1 to n do sldu[du[i]] := sldu[du[i]] + 1;
slloai := 0; tdloai := 0;
min := maxlongint;
try(1);
for i:=1 to n do loai[i] := false;
for i:=1 to n do
if kqx[du[i]] <>0 then
begin
dec(kqx[du[i]]);
loai[i] := true;
end;
writeln(f,n-min);
for i:=1 to n do
if not loai[i] then
begin
write(f,i,' ');
if i mod 100 =0 then writeln(f);
end;
close(f);
End;
begin
nhap;
XetDacBiet;
Tim;
end.
Bi 7: Chia ko
C N gi ko (N nguyn dng, N < 50), cc gi ko c nh s t 1 n N,
gi ko th i c Ai ci ko (Ai nguyn dng v Ai < 20; i = 1, 2, 3, , N).
Hy tm mt cch chia cc gi ko thnh hai nhm sao cho tng s ko trong hai
nhm chnh lch nhau t nht.
D liu: Nhp N v N s A1, A2, , AN t file vn bn KEO.INP c cu trc
gm 2 dng: dng u ghi s N, dng th hai ghi cc s ln lt t A1 n AN. Cc
s bt u ghi t u dng theo th t t tri sang phi.
Kt qu: Ghi ra tp vn bn KEO.OUT gm 3 dng:
Dng u tin ghi 3 s X, Y, Z, trong X l s ko chnh lch gia hai nhm,
Y l s ko ca nhm 1, Z l s ko ca nhm 2;
Duyt cc cu hnh t hp v ng dng
Trang 72
KEO.OUT
1 56 57
356
12478
Bi 8: Xp hng mua v
C N ngi xp hng mua v. Ta nh s h t 1 n N theo th t ng trong
hng (t u hng n cui hng). Thi gian phc v bn v cho ngi th i l ti. Mi
ngi cn mua mt v nhng c quyn mua ti a 2 v, v th mt s ngi c th
nh ngi ng ngay trc mnh mua h. Ngi th i nhn mua h v cho ngi th
i+1 th thi gian mua v cho 2 ngi l ri.
Yu cu: Tm phng n sao cho N ngi u c v vi thi gian t nht.
D liu: c t file vn bn MUAVE.INP gm c 3 dng, dng th nht ghi s
nguyn dng N, dng th hai ghi N s t1, t2,, tN, dng th ba ghi N-1s r1, r2, ,
rN-1.
Kt qu: ghi ra file vn bn MUAVE.OUT gm: dng th nht l tng thi gian
phc v bn v. Dng tip theo ghi ch s ca cc khch hng cn ri khi hng
V d:
MUAVE.INP
MUAVE.O
UT
17
2 5 7 8 4
2 4
3 9 10 10
Bi 9: To chui k t
Cho 3 k t A, B, C v mt s nguyn dng N ( 4 <=N<=100).
Yu cu: T 3 k t trn hy vit chng trnh to ra chui k t tho mn cc
tnh cht sau:
C di N.
Khng c hai chui con lin tip no ging nhau.
S k t B l t nht
D liu: Nhp s N t file vn bn CHUOIKT.INP
Trang 73
CHUOIKT.OUT
10
2
ACABACBCAC
Bi 10: Cc thanh g
ng Ho Bnh c mt tp hp cc thanh g c di bng nhau l L.
ng cht cc thanh g ra mt cch ngu nhin nhng di cc mu con u c
di nguyn.
V sau ng Ho Bnh c nh gn cc mu con khi phc li cc thanh g
ban u nhng li qun mt di L. ng quyt nh to lp cc thanh g c
di bng nhau.
Hy gip ng Ho Bnh to lp cc thanh g c di nh nhau v cnh ngn
cng tt.
D liu: vo cho t file vn bn THANHGO.INP
Dng u ghi s N (N <50), s lng cc mu g
Trn mi dng trong N dng tip theo ghi Li (0 < Li < 100), l s nguyn,
di mu g th i.
Kt qu: ghi ra file vn bn THANHGO.OUT
Dng u ghi L l di ngn nht tm c
Trn mi dng ghi di cc mu g dng ghp thnh thanh g
* V d:
THANHGO.INP
10
2
3
5
2
7
4
6
Duyt cc cu hnh t hp v ng dng
THANHGO.OUT
9
234
531
72
63
Trang 74
1
3
3
Bi 11: Trng cy
Nh ng G S vn ho tnh BG c mt i snh rng v p. ng c nh
trng mt s loi cy cnh vo N chu hoa c thit k c nh thnh mt hng
trn i snh, cc chu hoa c s th t t 1 n N tnh t tri sang phi. Bit c
thch ca ng, cc bn b mua tng ng M cy cnh khc nhau trng vo cc
chu hoa ni trn. Mi cy cnh c mt s hiu duy nht trong khong t 1 n M.
ng mun trng cc cy cnh vo cc chu hoa theo th t rng buc nu c cy
cnh s hiu i v cy cnh s hiu j m i<j th cy cnh s hiu i s c trng bn
tri cy cnh s hiu j. Tt c cc cy cnh u c trng vo cc chu hoa sao cho
m bo rng buc v th t cc s hiu. Nu s chu hoa nhiu hn s cy cnh th
nhng chu hoa khng dng ti s trng. Mi chu hoa ch c trng mt cy
cnh.
Mi chu hoa c thit k v hnh dng, kch thc, kiu cch c th khc nhau
(cc cy cnh cng c th khc nhau). V th, khi mt cy cnh i c trng vo mt
chu hoa j s c mt gi tr thm m nht nh, gi tr ny c biu din bi mt s
nguyn aij. Cc chu hoa trng c gi tr bng 0.
Yu cu: Hy tm cch trng cc cy cnh vo cc chu hoa tun theo rng buc
v th t sao cho tng cc gi tr thm m l ln nht. Nu c nhiu cch trng c
cng gi tr thm m th ch cn a ra ng mt cch.
D liu: vo t file vn bn TREE.INP gm:
Dng u tin ghi 2 s M v N (1 < N < 100; M < N < 100).
M dng tip theo, mi dng ghi N s, dng i ghi a[i,1],.., a[i,N] vi -50<a[i,j]<
50 l gi tr thm m khi trng cy cnh i vo chu hoa j.
Kt qu: ghi ra file vn bn TREE.OUT:
Dng u tin l tng s thm m ca cch trng.
Dng th hai ghi M s, s th k ghi s hiu ca chu hoa m cy cnh s hiu
k trng vo.
V d:
TREE.INP
TREE.
OUT
35
7
53
23 -5
-24
4
Trang 75
16
5
5
21
-4
10
23
-21
-20 20
-4
Bi 12 :Rbt qut vi
C 9 cn phng (nh s t 1 n 9) c qut vi vi mu trng, xanh hoc
vng. C 9 rbt (nh s t 1 n 9) ph trch vic qut vi cc phng. Mi rbt
ch qut vi mt s phng nht nh. Vic qut vi c thc hin nh mt chng
trnh ci sn theo qui tc:
nu phng ang c mu trng th qut mu xanh,
nu phng ang c mu xanh th qut mu vng,
nu phng ang c mu vng th qut mu trng,
Cn phi gi ln lt mt s cc rbt ra qut vi (mi ln mt rbt, mt rbt
c th gi nhiu ln v c th c rbt khng c gi. Rbt c gi s qut vi tt
c cc phng m n ph trch) cui cng cc phng u c mu trng.
Hy tn mt phng n nh vy sao cho lng vi phi qut l t nht. Gi thit
rng lng vi cho mi lt qut i vi cc phng l nh nhau.
D liu: vo t fie vn bn ROBOTQV.INP gm cc dng: 9 dng u, mi
dng m t danh sch cc phng c qut vi bi mt rbt theo th t t rbt 1
n rbt 9. Mi dng nh vy gm cc s hiu phng vit st nhau. Chng hn dng
th 2 c ni dung : 3578
M t rbt 2 ph trch vic qut vi cc phng 3, 5, 7, 8.
Dng cui m t mu vi ban u ca cc phng. Dng gm 9 k t vit st
nhau, k t th i biu din mu vi ca phng i vi qui c: k t T ch mu trng, k
t X ch mu xanh, k t V ch mu vng, .
Kt qu: ghi ra tp vn bn ROBOTQV.OUT gm mt dng di dng:
Nu khng c phng n th ghi mt ch s 0.
Tri li ghi dy th t cc rbt c gi (cc s hiu rbt vit st nhau)
V d:
ROBOTQV.INP
159
123
357
147
Duyt cc cu hnh t hp v ng dng
ROBOTQV.INP
2455688
Trang 76
5
369
456
789
258
XVXVXVTXT
Khi gi ca phng n x =
xi * length(r[i])
i
Bi 13: Xu i xng
Xu k t S c gi l xng nu cc k t cch u u v cui l ging
nhau. V d ABA v abcba l nhng xu i xng.
Xt cc xu c khng qu 2000 k t, ch cha cc k t A..Z, a..z, 0..9. Hy xo
i t k t nht thu c xu i xng.
D liu: vo t file vn bn XDX.INP
Dng u tin cha s n biu th chiu di xu
T dng th hai l n k t vit lin nhau, c th tri trn nhiu dng, mi dng
khng qu 70 k t
Kt qu: Ghi ra tp vn bn XDX.OUT cha s m biu th s k t cn xo
V d:
XDX.INP
XDX.OUT
bbC1221bA
Bi 14: Xp lch 1
Cho N cng vic, vi mi cng vic cho bit tin cng thu c khi thc hin
cng vic ny, thi gian hon thnh, thi im cui cng phi kt thc. Hy xp
lch thc hin sao cho thu c nhiu tin cng nht.
D liu: Vo t file vn bn XL1.INP gm:
+ Dng u l s nguyn dng N.
Trang 77
+ N dng sau, dng i+1 ghi 3 s tg, tdkt, gt tng ng l thi gian cn thit
hon thnh, thi im bt buc phi xong, gi tr tin cng ca cng vic i, vi
(i=1,...,N);
Kt qu: Ghi ra file vn bn XL1.OUT nh sau:
+ Dng u tin l tng gi tr tin cng;
+ Cc dng tip theo, mi dng ghi 4 s: i, T1, T2, gt tng ng l s hiu cng
vic, thi im bt u, thi im kt thc, gi tr ca cng vic c chn.
V d:
XL1.I
NP
XL1.OU
T
10
1
329
5 0 1
89
25
5
86
1 2
2 6
6 9
89
4
11
83
83
5
84
61
1
11
11
25
10
14 71
61
61
28
10
14
3
1
5
71
Trang 78
RENTING.OUT RENTING.IN
P
2 180
4
2 3
400 821 800
200 513 500
100 325 200
600 900 600
RENTING.OUT
2
2
1100
4
Bi 16: Xoay
Mt din tch c to bi cc vung, gm N hng v N ct (cc hng c
nh s t 1 n N theo chiu t trn xung di v cc ct c nh s t 1 n N
theo chiu t tri sang phi). Mi vung c chia i theo ng cho: Mt na
mu en, mt na mu trng. Trng thi ca mi vung c m ha t 0 n 3
theo hnh v sau:
Trang 79
Hnh 2
Hnh 1
0
0
0
2
1
3
2
1
0
2
3
0
1
2
2
2
3
4
1
1
3
4
2
2
270
270
180
180
270
180
Trang 80
n,min,i:integer;
Procedure init;
var i,j:integer;
Begin
assign(f,fi); reset(f);
readln(f,n);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
b:=a;
close(F);
min:=n*n;
End;
procedure cnkl;
var i,k,j,d:integer;
begin
d:=0;
for i:=1 to n do
for k:=i-1 downto 1 do
begin
b[k,i]:=otren[b[k,i-1],b[k+1,i]];
b[i,k]:=oduoi[b[i-1,k],b[i,k+1]];
end;
for i:=1 to n do
for j:=1 to n do
if a[i,j]<>b[i,j] then
Begin
inc(d);
if d > min then exit;
End;
if d < min then
begin
min:=d;
kqb:=b;
end;
end;
Procedure try(i:integer);
var j:integer;
begin
for j:=0 to 3 do
begin
b[i,i]:=j;
Duyt cc cu hnh t hp v ng dng
Trang 81
Trang 82
BL4.INP
3
0 0 0 1 0 0 0
BL4.OUT
3
0 0 1 1 3
1 0 1 0 0 0 0
0 0 0 1 0 0 0
1 0 0 0 0 1 0
0 0 1 0 0 0 0
Trang 83
CHONK.OUT
72
12 9 7 17
19 4
19 3
21 19 15 7
19 8
25 5
12
9 19
5
2 8 25
a[xi]
1
Trang 84
fi = 'CHONK.INP';
fo = 'CHONK.OUT';
Maxmn = 100;
var
a: array[1..maxmn,1..maxmn] of byte;
dong, cot, kqd, kqc
: array[1..maxmn] of byte;
cxd, cxc
: array[1..maxmn] of boolean;
m, n, k
: byte;
tmax, s
: longint;
procedure init;
var
f: text;
i,j : integer;
begin
assign(f,fi); reset(f);
readln(f,m,n,k);
for i := 1 to m do
for j:=1 to n do read(f,a[i,j]);
close(f);
fillchar(cxd, sizeof(cxd), true);
fillchar(cxc, sizeof(cxc), true);
s := 0; tmax := -maxint;
end;
procedure cnkl;
var i,j : integer;
begin
if s > tmax then
begin
tmax := s;
kqd := dong;
kqc := cot;
end;
end;
procedure inkq;
var i,j : integer;
f : text;
begin
assign(f,fo); rewrite(f);
writeln(f,tmax);
for i := 1 to k do writeln(f,a[kqd[i],kqc[i]],' ',kqd[i],' ',kqc[i]);
close(f);
Duyt cc cu hnh t hp v ng dng
Trang 85
end;
procedure try(i:integer);
var d,c : integer;
begin
for d := 1 to m do
for c:=1 to n do
begin
if cxd[d] and cxc[c] then
begin
dong[i] := d;
cot[i] := c;
s := s + a[d,c];
cxd[d] := false;
cxc[c] := false;
if i = k then cnkl
else try(i+1);
cxd[d] := true;
cxc[c] := true;
s := s - a[d,c];
end;
end;
end;
BEGIN
init;
try(1);
inkq;
END.
Bi 20: Tm tng nh nht
Cho ma trn gm m dng, n ct c cc phn t l cc s nguyn a[i,j], trong |
a[i,j]|<30000 (i=1..m, j=1..n).
Yu cu: Hy chn trn mi dng, mi ct ca ma trn ng mt s sao cho
khng c hai s no thuc cng mt dng hay cng mt ct tng cc s c chn
l nh nht.
D liu: Vo t file vn bn TONGMIN.INP c cu trc:
Dng u ghi 2 s nguyn m, n. (1 < m < 100, 1 < n < 30);
Trong m dng tip theo, dng th i ghi n s a[i,j] vi i=1..m, j=1..n;
Kt qu: Ghi ra file vn bn TONGMIN.OUT c cu trc:
Dng u tin ghi tng nh nht tm c
Duyt cc cu hnh t hp v ng dng
Trang 86
TONGMIN.OUT
-67
-18 1 3
-15 2 1
-14 4 2
-20 7 4
thc f(x) =
thc f(x) =
Trang 87
KT LUN
Hin nay cha c ti liu chnh thc dnh cho lp Chuyn Tin khi THPT. M
ch tn ti di dng tn chuyn ca B Gio dc gi v cho cc trng. Do vy
vic dy v hc gp nhiu kh khn trong vic thng nht v ni dung cng nh mc
v kin thc chuyn mn. Nn vic nghin cu v xy dng chuyn ny l thc
s cn thit.
Mc ch ca chuyn l truyn ti mt cch tng qut, chi tit v s thng
nht v mt ni dung ngi c d hiu v thy c tm quan trng ca bi ton
lit k t hp v mt s bi tp ng dng trong Tin hc dnh cho hc sinh chuyn tin
trng THPT.
Ni dung ca chuyn c cc tc gi chn lc qua chng trnh thc
dy ti trng v tham kho ca mt s ng nghip khc trong nc.
Kin thc l v hn, trong chuyn ny chng ti c gng sng to, su
tm v trao i mt cch tt nht c th v mt l thuyt, cc bi tp ng dng v cc
bi tp trong cc k thi trong nc to thnh cun ti liu hiu qu dnh cho gio
vin v cc em hc sinh am m tin hc chnh thc lm ti liu cho mnh trong qu
trnh hc tp v nghin cu.
Trang 88
Trang 89
MC LC
M U...............................................................................................................................................1
PHN 1. L THUYT T HP.........................................................................................................2
I. S LC V T HP................................................................................................................2
Khi nim.....................................................................................................................................2
Cc bi ton thng gp...............................................................................................................2
II. NHC LI L THUYT TP HP.........................................................................................2
1. Cc khi nim v k hiu.........................................................................................................2
Cc php ton trn tp hp...........................................................................................................3
III. CC NGUYN L C BN....................................................................................................3
1. Nguyn l cng.........................................................................................................................3
Nguyn l nhn.............................................................................................................................4
Nguyn l b tr...........................................................................................................................6
Nguyn l Dirichl........................................................................................................................7
IV. MT S CU HNH T HP THNG GP......................................................................8
1. Hon v.....................................................................................................................................8
Chnh hp lp chp k ca n phn t.............................................................................................8
Chnh hp khng lp chp k ca n phn t..................................................................................9
T hp k ca n phn t.................................................................................................................9
PHN 2. PHNG PHP SINH.......................................................................................................12
I. Khi nim....................................................................................................................................12
II. p dng phng php sinh vo gii mt s bi ton................................................................13
1. Bi ton 1: Lit k tt c cc dy nh phn c di N. .......................................................13
Bi ton 2: Lit k cc tp con m phn t ca tp n phn t......................................................14
Bi ton 3: Lit k cc hon v ca tp n phn t.......................................................................17
Bi ton 4: Phn tch s nguyn dng N thnh tng cc s nguyn khng m.......................19
PHN 3. GII THUT QUAY LUI..................................................................................................23
1. tng...................................................................................................................................23
Thut ton quay lui.....................................................................................................................26
Cc v d.....................................................................................................................................30
Ti liu tham kho......................................................................................................................49
PHN IV. NG DNG.....................................................................................................................52
I. KHI NIM BI TON TI U.............................................................................................52
1. Mt s khi nim....................................................................................................................52
Mt s phng php gii bi ton ti u t hp........................................................................55
II. PHNG PHP DUYT GII BI TON TI U.............................................................56
1. T tng ch o...................................................................................................................56
Cu trc ca phng php duyt tng qut................................................................................56
III. BI TP P DNG................................................................................................................58
KT LUN.........................................................................................................................................88
TI LIU THAM KHO...................................................................................................................89
MC LC...........................................................................................................................................90
Trang 90