You are on page 1of 51

N TP TUYN SINH THC S CNTT

MN K THUT LP TRNH

1. Ti u khng gian (b nh)
2. Ti u thut ton (thi gian)
3. Cc bi ton m
Ngi trnh by:
Ths. Nguyn Thanh Hng
Cc c trng
ca thut ton
Tnh ng n
Tnh dng
Tnh Ph dng
Cc i lng vo ra
Tnh hiu qu
Khng gian
Thi gian
Phn I: Ti u ha chng
trnh: Khng gian
Bi ton tro tr
Cho 2 s nguyn a,b. Hy hon v hai
gi tr ny vi nhau.
Gii quyt bi ton
Cch gii thng thng
S dng bin t: trung gian

t:=a;
a:=b;
b:=a;
Trng thi ban u
3 a
5 b
t
Gii quyt bi ton
Cch gii thng thng
S dng bin t: trung gian

t:=a;
a:=b;
b:=a;
3 a
5 b
3
t
Gii quyt bi ton
Cch gii thng thng
S dng bin t: trung gian

t:=a;
a:=b;
b:=a;
5
a
5 b
3
t
Trng thi cui cng
Gii quyt bi ton
Cch gii thng thng
S dng bin t: trung gian

t:=a;
a:=b;
b:=a;
5
a
3
b
3
t
Gii quyt bi ton
Khng s dng bin trung gian (ti
u v mt b nh)

a:=a+b;
b:=a-b;
a:=a-b;


Trng thi ban u
3 a
5 b
Gii quyt bi ton
Khng s dng bin trung gian (ti
u v mt b nh)

a:=a+b;
b:=a-b;
a:=a-b;


8 a
5 b
Trng thi ban u
3 a
5 b
Gii quyt bi ton
Khng s dng bin trung gian (ti
u v mt b nh)

a:=a+b;
b:=a-b;
a:=a-b;


8 a
3 b
8 a
5 b
Gii quyt
bi ton
a:=a+b;
b:=a-b;
a:=a-b;


Trng thi ban u
3 a
5 b
Trng thi cui cng
5 a
3 b
8 a
3 b
Ti u ho v mt khng
gian
Bi ton 2: Cho 1 mng A mt chiu
gm cc s nguyn: a1, a2,an.
Hy o ngc mng A.
V d: Mng A:

Kt qu:

5 2 3 7 4 1 9
7 1 4 5 3 2 9
Gii quyt bi ton
Cch thc hin thng thng:
To mng B

For i:=1 to n do
B[i] := A[n-i+1]


(B[1] := B[n], B[2]:=B[n-1],.)

5 2 3 7 4 1 9
7 1 4 5 3 2 9
1 5
5 7 1 4 3 2 9
2 3 7 4 9
Gii quyt bi ton: ti u
Khng s dng mng ph
For i:=1 to n div 2 do
TraoTri(a[i], a[n+1-i]);
Mng A:
Mng A:
A[i] A[n-i+1]
Bi ton 3
Cho 1 mng A c n+m phn t:
a
1
,a
2
,,a
m
,a
m+1
,,a
m+n
Hy sp xp li mng A theo th t
nh sau:
a
m+1
,,a
m+n
,a
1
,a
2
,,a
m

V d: n=3,m=4
5 2 3 7 4 1 9
9 1 2 3 5 4 7
2 1 3 5 4 6 7
Mng A cui cng
Ch s
Mng A u tin
Gii quyt bi ton
S dng mng ph B:
For i:=1 to n do
B[i]:=A[m+i];
For i:=n+1 to m+n do
B[i]:=A[i-n];


5 2 3 7 4 1 9
9 1 7
9 1 2 3 5 4 7
Gii quyt bi ton
Khng s dng mng ph
DaoNguocMang(A,1,m+n)


DaoNguocMang(A,1,n)


DaoNguocMang(A,n+1,m+n)
5 2 3 7 4 1 9 1 9 7 3 4 5 2
1 9 7 3 4 5 2 1 7 9 3 4 5 2
1 7 9 3 4 5 2 1 7 9 5 2 3 4
Bi ton ng dng
Cho n on thng trn trc s
(n 100.000).
Mi on thng cho bi 2 s a
I
, b
I
(a
I
u
mt tri, b
I
u mt phi):
0 a
I
, b
I
10.000.
Cho 2 s p, q ( 0 p, q 10.000)
Hy kim tra xem n on thng [a
I
, b
I
] c
ph on [p, q] khng ?
Nu ph hy tm t nht cc on thng
trong n on trn ph on [p, q].
Gii quyt bi ton
cch bnh thng
Phi lu mi on thng bng hai u
mt (ai,bi): cn 2 mng 100.000 phn t

ti u
Ta ch cn dng 1 mng C: 10.000 phn
t:
C[i]: gi tr kt thc xa nht m on c
u l i.

Bi ton ng dng
Dng gi tr ca phn t lm ch s cho
mng
Cho mt dy s a
1
, a
2
, , a
n
.
0 ai 20000 (n 100000)
S x gi l phn t gia dy nu nh
tn ti 1 ch s i sao cho:
a
i
= x v
s lng phn t < x khng vt qu n/2,
s lng phn t > x khng vt qu n/2.
Tm x ?

Gii quyt bi ton
m s lng mi phn t xut hin
trong mng.
V gi tr cc phn t ch trong phm
vi t 1 ti 20000 nn ta dng mt
mng:
DEM[1..20000] lu tr trong
DEM[i] l s lng cc phn t trong
mng bng i.
S x cn tm l s i nh nht tho:
DEM[1]+DEM[2] + +DEM[i]>=n/2

Ti u ho v thi gian
Bi ton tm kim
Cho 1 mng A mt chiu:
a1, a2, ..., an
V mt s b.
Yu cu: Tm xem s b c xut hin
trong A hay khng ?
Tm kim tun t
V d: Mng A:
Phn t b=4




phc tp: O(n)
5 2 3 7 4 1 9
5 2 3 7 4 1 9
4
Tm kim nh phn
Cho mng A c sp xp tng
Tm phn t b=25 c xut hin trong A
hay khng ?




So snh: b=25 > ; chng t b khng
th xut hin trong phm vi A[1] n A[5]

5 1 8 18 14 22 27 31 39 45
L=1
R=10
N=10
L+R div 2 = 5
18
18
L=6 R=10
Tm kim nh phn
Cho mng A c sp xp tng
Tm phn t b=25 c xut hin trong A
hay khng ?





So snh: b=25 < ; chng t b khng
th xut hin trong phm vi A[8] n
A[10]

5 1 8 18 14 22 27 31 39 45
L=6
R=10
N=10
L+R div 2 =8
31
31
L=6
R=7
Tm kim nh phn
Cho mng A c sp xp tng
Tm phn t b=25 c xut hin trong A
hay khng ?




So snh: b=25 > ; chng t b khng
th xut hin trong phm vi A[6] n A[6]

5 1 8 18 14 22 27 31 39 45
L=R=7
R=7
N=10
L+R div 2 =6
22
22
L=6
Tm kim nh phn
Cho mng A c sp xp tng
Tm phn t b=25 c xut hin trong A
hay khng ?




So snh: b=25 < ; chng t b khng
th xut hin trong phm vi A[7] n A[7]

5 1 8 18 14 22 27 31 39 45
L=7, R=6: Thut ton kt thc
R=7
N=10
L+R div 2 =7
27
27
L=7
Thut gii: Tm kim nh
phn
L:=1; R:=n;
While (L<=R) do
Begin
Mid = L+R div 2;
X = a[Mid];
If X>b then L:=Mid+1;
If X<b then R:=Mid-1;
If X=b then TmThy v
KtThc
End;
phc tp
thut ton:
O(log
2
n)
ng dng bi ton
Pht biu: Cho 1 dy s A gm c n
phn t. Hy tm 2 ch s i,j sao cho
a
i
+a
j
= b vi b l mt s cho trc.
V d:


Kt qu:

1 14 27 18 5 22 8 45 39 31
b= 50
i=4 (5) j=8 (45)
Gii quyt bi ton
Cch lm thng thng
For i:=1 to n do
For j:=1 to n do
If a[i]+a[j]=b then Thng_Bo_Tm_Thy; Dng

phc tp: O(n
2
)
Gii quyt bi ton
Sp xp li mng cho theo th t
tng dn: O(nlogn) [Thut ton
QuickSort], lu li ch ban u
Lc ny ta c:


5 1 8 18 14 22 27 31 39 45
Gii quyt bi ton (t.t)
Thc hin vic tm kim nh phn
nh sau:
For i:=1 to n do
Tim_Kiem_Nhi_Phan(b-a
i
,a)
Vi i=1, ta tm kim nh phn
phn t
b-a
1
=50-1=49 trn mng A

5 1 8 18 14 22 27 31 39 45
49
Kt qu vi chi ph O(logn): khng thy
Gii quyt bi ton (t.t)
Thc hin vic tm kim nh phn
nh sau:
For i:=1 to n do
Tim_Kiem_Nhi_Phan(b-a
i
,a)
Vi i=2, ta tm kim nh phn
phn t
b-a
1
=50-5=45 trn mng A

5 1 8 18 14 22 27 31 39 45
45
Kt qu vi chi ph O(logn): TM THY
Nhn xt, nh gi
Vi cch lm nh th:
phc tp: O(nlogn)
Tng phc tp O(2nlogn) < O(n
2
)
Cch gii quyt bi ton ti u hn
cch thng thng.

ng dng bi ton:
Cho 2 mng X (c N phn t), Y (c
M phn t) c sp tng dn
Cho trc s b.
Tm 2 phn t, 1 phn t thuc X, 1
phn t thuc Y sao cho x
i
+y
j
=b
V d:

14 1 18 45
5 8 17 39 40
X
Y
b=50
X[5]=45
Y[1]=5
Kt qu X+Y=50
Cch gii quyt
Thng thng O(n
2
)
Nhanh hn ? O(nlogn)
For i:=1 to n
Tim_Kiem_Nhi_Phan(b-x
i
,Y)
Nhanh nht ? O(m+n)
Cch gii quyt O(m+n)
i:=1; j:=m;
Lp li
If xi+yj>b then dec(j)
If xi+yi<b then inc(i)
If xi+yj=b then TimThay; Dng;

Trn hai mng
Cho 2 dy x gm k phn t v y gm
i phn t sp theo th t tng
dn.
Hy xy dng dy z gm k+i phn t
gm tt c cc phn t ca dy x v
dy y sao cho dy z cng l dy tng
dn.

Thut gii
X[k+1]:=Y[l]+1; Y[l+1]:=X[k] +1;
I:=1; J:=1;
For t:=1 to k+l do
If X[i] < Y[j] Then
Begin
Z[t]:=X[I];
I:=I+1;
End
Else
Begin
Z[t]:=Y[J];
J:=J+1;
End

Bi ton ng dng
Tm cc cp s t nhin khc nhau
M, N sao cho tng cc c ca s M
bng N v ngc li vi M, N <
10.000
( thi cao hc nm 2000)
Ti u ho on chng trnh:
Var k, n, i, j : longint;
Function TongUoc (a:longint): longint;
Var t,s: longint;
Begin
s:=0;
For t:=1 to a Div 2 to
If a Mod t=0 Then s:=s+t;
TongUoc:=s;
End
Begin
For i:=1 to 10000 do
For j:=i+1 to 10000 do
If (TongUoc(i)=j) and
(TongUoc(j)=i) and (i<>j)Then
Writeln(i,j);
End
Bi tp ng dng
Xy dng thut gii v chng trnh vt
cn mt cch hp l :
Tm cc b nghim nguyn, dng (x, y,
z), tho mn:
x + y + z = N
x
k
+ y
k
+ z
k
= M
(Trong : M, N, k l cc s nguyn,
dng)
( thi cao hc nm 2001)
Mt s bi ton m
m mt dy s nh phn di n m
khng c k s 1 ng lin tip
Gii quyt:
Vi k=2. Gi F(i) l s dy nh phn di
i khng c hai s 1 ng lin tip.
Trong dy nh phn di i do hai loi :
Phn t th nht bng 1Phn t th 2 =0:
s lng bng F(i-2)
Phn t th nht bng 0 : s lng bng F(i-1)
Do : F(i)=F(i-1)+F(i-2)
Bi ton m 2
Cho li m x n. i t v tr (1,1) n
(m,n). i bng ng i ngn nht
D
min
= (m-1) + (n-1).
Hi c bao nhiu ng i ngn nht
t (1, 1) n (m,n)
Gii quyt bi ton
Gi F[i, j] l s ng i ngn nht
t (1,1) n (i, j).
Chng ta cn tnh F[m, n].
Ta bit: F[i, j] = F[i, j-1] + F[i-1, j]
Vi F[1, 1] = 1
ng i ca con nga
C mt con nga u tin bn tri ca
mt bng giy c M . Khi di chuyn, con
nga c th thc hin bc nhy c di
(s lng ) thuc tp gm M gi tr cho
trc v ch di chuyn v pha bn phi.


Yu cu: Tnh s cch di chuyn t u
bn tri n u bn phi bng giy ca
con nga.

Gii quyt bi ton
Gi F[i] l s cch i ca con nga t
1 n th i



m
j
j i F i F
1
Bi ton v ti u
Cho mt bng A kch thc M x N
gm cc s nguyn . Hy chia bng
thnh 4 phn bng mt ng
ngang v mt ng dc sao cho
chnh lch gia phn c tng ln
nht v phn c tng b nht l nh
nht.
Dy n iu di nht
Cho mt dy s nguyn A gm N phn
t. Tm mt dy con n iu di nht.
Xu con chung ln nht
C hai xu S1 v S2. Tm xu con
chung
ca hai xu S1 v S2 c di ln
nht.

You might also like