Tải bản đầy đủ (.doc) (47 trang)

skkn một số kinh nghiệm nâng cao hiệu quả ôn thi học sinh giỏi thông qua các bài toán đệ quy, khử đệ quy và đệ quy quay lui

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (408.52 KB, 47 trang )

Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
MC LC
A. PHN M U ...........................................................................................................2
I. Lý do chn ti: ............................................................................................................2
II. Mc ớch nghiờn cu: .....................................................................................................3
III. i tng v phm vi nghiờn cu: ................................................................................3
IV. Nhim v nghiờn cu: ...................................................................................................3
V. Phng phỏp nghiờn cu: ...............................................................................................4
B. PHN NI DUNG ........................................................................................................5
I. C s lý lun ca ti: ...................................................................................................5
1. Cỏc khỏi nim: ................................................................................................................5
a) Khỏi nim quy: .......................................................................................................5
b) c im ca chng trỡnh con quy:........................................................................6
c) Phõn loi quy: Gm 2 loi: .....................................................................................6
2. Nguyờn tc hot ng ca gii thut quy: ..................................................................7
a) Khỏi nim stack: ...........................................................................................................7
b) Nguyờn tc hot ng ca gii thut quy ng dng Stack: .....................................7
c) u im v nhc im ca gii thut quy: ............................................................8
3. quy quay lui: ..............................................................................................................8
a) Khỏi nim quy quay lui: ...........................................................................................8
b) Gii thut tng quỏt ca quy quay lui: ....................................................................9
c) Nột c trng ca phng phỏp quy quay lui: .........................................................10
d) u v nhc im: .......................................................................................................11
4. Phng phỏp kh quy: ...............................................................................................11
5. S khỏc nhau gia quy v lp: ...................................................................................12
II. GII PHP NNG CAO HIU QU ễN LUYN THI HSG THễNG QUA CC BI
TP V D QUY, QUY QUAY LUI V KH QUY. .....................................13
1. Cỏc bi tp c bn v quy v khụng quy: ..............................................................13
2. Cỏc bi tp quy v quy quay lui: ...........................................................................14
3. Kt qu t c: . .........................................................................................................19


C. KT LUN V KIN NGH ......................................................................................20

GV: Trần Ngọc Dơng

1


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
A. PHN M U
I. Lý do chn ti:
Nh chỳng ta ó bit, vic o to bi dng hc sinh gii tht s l cụng vic rt khú
khn, ũi hi nhiu cụng sc ca giỏo viờn v hc sinh. Trong mt nhng nm gn õy,
trong cỏc k thi chn hc sinh gii cỏc mụn vn húa cp tnh, i tuyn hc sinh gii
trng THPT Nụng Cng 4 ó t c rt nhiu thnh tớch cao, c th xp hng trong cỏc
nm hc t 2015 tr v trc ng di th 40 ca tnh. Trong nm hc 2016-2017 vt
lờn th 28 v nm hc 2017-2018 gi nguyờn th hng. iu ny c s gúp phn cụng
sc rt ln lao ca i ng cỏc thy cụ trc tip ging dy, s vn lờn mi khú khn t cỏc
em hc sinh ó gúp phn vo kt qu chung ca nh trng, trong ú cú s úng gúp thnh
tớch ca b mụn Tin hc. Vỡ vy bn thõn tụi luụn c gng phn u cựng bt nhp vi
i tuyn cỏc mụn trong nh trng.
Tuy nhiờn, sau nhiu nm o to, tụi nhn thy thc trng ca cụng tỏc ụn thi hc
sinh gii ca b mụn Tin hc ó bc l nhng khú khn v thun li sau:
+ Thun li:
- c s quan tõm, ng viờn ca Ban giỏm hiu nh trng. S ng lũng ca cỏc
bc ph huynh hc sinh trong i tuyn ó ng viờn v dnh thi gian cỏc em ụn luyn.
- S ỳc kt kinh nghim ging dy, trau di kin thc ca bn thõn trong quỏ trỡnh
ging dy.
- Hc sinh cú ý thc hc tp, say mờ trong mụn hc nng v t duy, trong ú nm
hc 2017-2018 ó cú 2 em trong i tuyn Tin hc thi 2 mụn: 1 em thi mụn Húa v 1 em

thi mụn Toỏn.
+ Khú khn:
- Tỡm kim v xõy dng ngun nhõn lc rt khú khn, nht l trong iu kin m bt
u t nm hc 2017-2018 khi hc sinh 12 khụng tham gia d thi, iu ny ó lm cho
lc lng hc sinh cú cht lng khi 11 khú cú th thi Tin hc (vỡ cỏc em hc mụn t
nhiờn ó thi mụn khỏc).
- Hc sinh luụn ng trc s la chn gia hc chuyờn sõu thi hc sinh gii v
hc thi H-C, dn n vic thi mụn trỏi vi mụn thi H-C l khụng nm trong s
la chn ca cỏc em.
- Mt s hc sinh tham gia hc bi dng nhng cha tht c gng nờn kt qu thi
hc sinh gii cha cao.
- Bn thõn cha iu kin, thi gian t bi dng, nghiờn cu nhm nõng cao
cht lng dy hc, trong khi ú ỏp lc cụng vic ụn luyn khụng h nh.
- C s vt cht, trang thit b, ti liu dy hc phc v cho cụng tỏc bi dng HSG
cũn nhiu thiu thn, h hng nhiu.

GV: Trần Ngọc Dơng

2


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
- c bit khi kin thc thi hc sinh gii rt rng, trong khi ú cỏc em ch c ụn
luyn t khi lm quen vi ngụn ng lp trỡnh cho n khi i thi ch c khong 2-3 thỏng.
Trc nhng thun li v khú khn nh trờn v qua nhiu nm tham gia ụn luyn thi
hc sinh gii tụi ó rỳt ra nhiu bi hc kinh nghim, trong ú cú vic giỳp hc sinh t kt
qu cao nht ca nhng bi thi khú, ú l cỏc bi cui cựng ca thi. Nhng dng bi ny
thng dựng gii thut quy gii.
Nh ta ó bit, cỏc phộp lp l mt trong nhng k thut c dựng gii cỏc bi

toỏn bng cỏch thc hin liờn tip mt s cỏc cõu lnh trong vũng lp cho ti khi mt iu
kin no ú c tha món. Mt k thut lp trỡnh c s dng thay th cho cỏc phộp
lp ú l k thut quy. Mt khỏc, trong thc t cú rt nhiu bi toỏn ũi hi s lp i lp
li mt cỏch phc tp. V quy cung cp cho ta c ch gii quyt bi toỏn phc tp mt
cỏch n gin. Hn na, quy cũn thớch hp gii quyt cỏc bi toỏn cú bn cht quy
v rt nhiu bi toỏn cho n nay vn cha cú li gii phi quy.
T mc ớch nhm nõng cao kt qu ụn luyn thi hc sinh gii, ng thi gii quyt
cỏc khú khn trong quỏ trỡnh ụn luyn tụi ó chn ti Mt s kinh nghim nõng cao
hiu qu ụn thi hc sinh gii thụng qua cỏc bi toỏn quy, kh quy v quy quay
lui lm ti sỏng kin kinh nghim ca mỡnh.
II. Mc ớch nghiờn cu:
- Nhm nõng cao hiu qu ụn luyn thi hc sinh gii.
- Gõy hng thỳ i vi hc sinh tham gia thi hc sinh gii mụn tin hc thụng qua vic
sinh test cho mi bi tp chm im, phõn tớch d liu x lý.
- Khc phc cỏc khú khn khi gii cỏc bi toỏn khú trong thi.
- Nõng cao nng lc ca bn thõn cng nh cỏc i tng cú s dng phng phỏp
quy gii bi tp.
III. i tng v phm vi nghiờn cu:
1. i tng:
i tng nghiờn cu ca ti l tỡm hiu v lý thuyt quy, xõy dng cỏc phng
phỏp gii quy thụng qua cỏc bi tp t n gin n phc tp.
2. Phm vi:
- Thc hin cỏc gii cỏc bi toỏn bng phng phỏp quy.
IV. Nhim v nghiờn cu:
- Nghiờn cu nhng c s v lý lun v lý thuyt quy, tỡm hiu cỏc ng dng v
quy.
- Nghiờn cu v phõn tớch cỏc c im, u - nhc im khi s dng gii toỏn bng
phng phỏp quy.

GV: Trần Ngọc Dơng


3


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
- Nghiờn cu thc tin dy hc trong quỏ trỡnh hng dn hc sinh gii toỏn bng
quy.
V. Phng phỏp nghiờn cu:
1. Lý thuyt
- Tham kho ti liu sỏch, bỏo, mng Internet cú liờn quan trc tip n ti.
2. Thc tin
Trong quỏ trỡnh dy hc ụn luyn thi hc sinh gii ln lt thc hin cỏc bc sau:
+ Tỡm hiu lý thuyt, cỏc bi toỏn no ng dng bng phng phỏp quy.
+ Xõy dng cỏc bi toỏn n gin gii bng phng phỏp quy hc sinh tip cn
tng bc cỏc dng toỏn c ỏp dng.
+ Thc hin gii cỏc bi toỏn khú trong thi HSG tnh cỏc nm v thi cỏc tnh
khỏc.
+ To cỏc TEST cho mi bi tp t bi d n khú nhm to hng thỳ hc tp cho hc
sinh, ng thi ỏnh giỏ c phc tp ca thut toỏn, ỏnh giỏ c nng lc phõn tớch
thut toỏn vit c mt chng trỡnh ti u nht.

GV: Trần Ngọc Dơng

4


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
B. PHN NI DUNG

I. C s lý lun ca ti:
1. Cỏc khỏi nim:
a) Khỏi nim quy:
Nu thut toỏn ca mt bi toỏn A c thc hin bng thut toỏn ca bi toỏn A cú
dng ging nh A, thỡ ú l thut toỏn quy. (A nh hn A). Hay cú th núi cỏch khỏc ú
l: T bi toỏn A chỳng ta cú th chia nh bi toỏn ú thnh cỏc bi toỏn con cựng kiu so
vi bi toỏn gc ban u, c chia nh nh vy cho n khi no gp n bi toỏn c bn
nht m chỳng ta cú th x lý c (trng hp suy bin) thỡ thao tỏc dng.
Nh vy trong quỏ trỡnh lp trỡnh, vic xõy dng cỏc chng trỡnh con (th tc/hm)
nu s dng phng phỏp quy s c hiu nh sau: Chng trỡnh con quy l
chng trỡnh con m trong ú cú li gi ti chớnh chng trỡnh con ú.
+ Cỏc bi toỏn cú th dựng quy:
Bi toỏn d dng gii quyt trong mt s trng hp riờng ng vi cỏc giỏ tr c bit
ca tham s. Ta gi õy l trng hp suy bin. Trong trng hp tng quỏt, bi toỏn cú th
quy v mt bi toỏn cựng dng nhng giỏ tr tham s thỡ b thay i. V sau mt s hu hn
bc bin i é Quy s dn n trng hp suy bin.
Vớ d:
1. nh ngha v giai tha n!:
+ Kt qu vi test n = 5:
0! = 1
5! = 5 x 4!
Nu n>0 thỡ n!=n*(n-1)!
= 5 x (4 x 3!)
= 5 x (4 x (3 x 2!))
+ Code mụ t nh sau:
= 5 x (4 x (3 x (2 x 1!)))
Function gt(n: Word): Longint;
= 5 x (4 x (3 x (2 x (1 x 0!)))) Trng hp
Begin
suy bin

If n = 0 then gt : =1
= 5 x (4 x (3 x (2 x 1)))
Else gt := n*gt(n - 1);
= 120.
End;
Cỏc bi toỏn khỏc:
2. nh ngha v s t nhiờn:
0 l mt s t nhiờn
n l mt s t nhiờn khi n-1 l 1 s t nhiờn
3. nh ngha dóy Fibonacci f(n):
1,
Nu n = 1;
1,
Nu n = 2;
F(n-1) + f(n-2) Nu n > 2.

GV: Trần Ngọc Dơng

5


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
T cỏc vớ d trờn chỳng ta nhn thy chỳng u cú chung cu trỳc dng hm gi cỏc
hm khỏc di dng mụ hỡnh phõn cp. Tuy nhiờn i vi mt s bi toỏn, vic dựng hm
gi ngay chớnh nú rt hu dng. Cú th nh ngha hm quy l hm s gi n chớnh nú
trc tip hay giỏn tip thụng qua cỏc hm khỏc. Vn quy l mt vn rt phc tp,
gõy khú hiu cho ngi hc, c bit l nhng hc sinh mi hc lp trỡnh cú t duy thut
toỏn cha sõu. Do ú trong ti s gii thiu, phõn tớch, mụ phng cỏc bi toỏn quy t
n gin n phc tp cỏc em d dng tip cn.

Trc tiờn ta xem xột khỏi nim quy, sau ú kim tra trờn mt vi chng trỡnh cú
cha cỏc hm quy. Cỏch tin hnh gii mt bi toỏn quy nhỡn chung cú nhng im
chung sau.
Trc tiờn gi hm quy gii bi toỏn, hm quy thc ra ch bit cỏch gii bi
toỏn trong trng hp n gin nht (hay cũn gi l trng hp c s). Nu hm quy
c gi trong trng hp c s, hm ch cn n gin tr li kt qu. Nu hm c gi
trong cỏc trng hp phc tp hn, hm quy s chia cụng vic cn gii quyt thnh hai
phn. Mt phn hm bit cỏch gii quyt nh th no, cũn phn kia vn khụng bit cỏch
gii quyt nh th no tuy nhiờn c gi l cú kh nng quy, phn sau phi ging
vi bi toỏn ban u nhng n gin hn hay nh hn bi toỏn ban u. Bi vỡ bi toỏn
mi ging vi bi toỏn ban u nờn hm s thc hin gi chớnh nú gii quyt cụng vic
n gin hn ny - õy chớnh l li gi quy hay cũn gi l mt bc quy. é m bo
vic quy cú kt thỳc, mi mt ln gi quy thỡ bi toỏn phi m bo n gin hn v
cỏc bc quy ny cũn thc hin tip cho n khi no bi toỏn n gin dn, n gin ti
mc tr thnh trng hp c s. Cú th nhn thy hm quy x lý trng hp c s
tr li kt qu tớnh c cho cỏc hm mc phc tp hn, ri n lt cỏc hm ny li tớnh
tr li kt qu cho cỏc hm phc tp hn na ... c nh vy cho n li gi hm ban u.
b) c im ca chng trỡnh con quy:
- Trong chng trỡnh con quy cú li gi n chớnh chng trỡnh con ú.
- Mi ln gi li chng trỡnh con ú thỡ kớch thc bi toỏn ó thu nh hn trc.
- Cú mt trng hp c bit: ú l trng hp suy bin. õy chớnh l trng hp
giỳp chỳng ta kt thỳc vic chia nh chng trỡnh t õy truy hi cụng thc ly kt qu.
c) Phõn loi quy: Gm 2 loi:
quy trc tip v quy giỏn tip.

GV: Trần Ngọc Dơng

6



Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG

+ quy trc tip: L loi quy m i tng c mụ t trc tip qua nú:
Vớ d 1: A mụ t qua A, B, C Trong ú B, C khụng cha A.
Vớ d 2: Mụ t quy cõy gia ph: Gia ph ca mt ngi bao gm ngi ú v gia
ph ca ngi ch v gia ph ca ngi m.
Vớ d 3: Mụ t quy v thi chn hoa hu:
- Chn hoa hu ca tng khu vc.
- Chn hoa hu ca cỏc hoa hu.
+ quy giỏn tip: L loi quy m i tng c mụ t giỏn tip qua nú:
Vớ d: A mụ t qua B, C, D. Trong ú: B c mụ t qua A v E, cũn C v D khụng
cha A
2. Nguyờn tc hot ng ca gii thut quy:
Trong quỏ trỡnh thc hin li gi quy, cỏc tham s, bin cc b hay a ch s c
lu tm thi trong b nh. Cỏc giỏ tr trờn s c ly ra gii quyt khi xy ra trng
hp suy bin, giỏ tr vo sau cựng s c ly ra u tiờn. Chớnh vỡ vy quỏ trỡnh lu v x
lý d liu s thc hin theo mụ hỡnh stack.

Hỡnh nh minh
ha hot ng
ca stack

a) Khỏi nim stack:
Stack (ngn xp) l mt danh sỏch m vic thờm v xúa cỏc phn t ch din ra mt
u ca danh sỏch. Stack c thit k theo nguyờn lý Last-In-First-Out (LIFO), ngha
l vo sau, ra trc. Phn t no c thờm vo sau cựng s l phn t c ly ra u tiờn.
Vớ d: - Xp a CD chng lờn nhau, a CD cui cựng a vo s l a CD u tiờn ly ra
+ c im ca Stack
Mi phn t trong Stack phi cựng kiu d liu v cú th l bt k kiu d liu no, k

c struct hay object. Mt Stack gm cú phn ỏy (bottom) v phn nh (top). Phn t nm
nh Stack c gi l Top Item. Mi thao tỏc thờm, xúa phn t u din ra nh
Stack.
b) Nguyờn tc hot ng ca gii thut quy ng dng Stack:

GV: Trần Ngọc Dơng

7


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
- Khi thc hin mt gii thut quy thỡ cỏc bc ca gii thut quy s ln lt
c thc hin tun t.
- Khi gp li gi quy thỡ trc khi thc hin li gi quy, on mó lnh cha
c thc hin xong cựng vi cỏc i tng d liu liờn quan ti thi im ny s c lu
vo stack.
- n lỳc no ú khụng th thc hin li gi quy na (trng hp suy bin) thỡ cỏc
i tng c lu trong stack s ln lt c ly ra x lý.
Vớ d: Gii thut quy cho bi toỏn tớnh N!
Gi s N = 3, quy trỡnh thc hin nh sau:
- Thc hin li gi hm: giaithua := gt(3); mỏy tớnh s ghi nh l: gt(3) := 3 * gt(2);
v i tớnh gt(2).
- Tip tc mỏy li ghi nh: gt(2):= 2*gt(1); v i tớnh gt(1).
- Theo nh ngha ca hm thỡ khi gt(1):= 1; mỏy s quay ngc li: gt(2):= 2 * 1; v
cho kt qu l 2.
- Tip tc: gt(3) := 3 * 2; cho kt qu l 6.
Nh vy kt qu cui cựng tr v l 6. Ta cú: 3! = 6.
Mc dự ng dng gii toỏn bng phng phỏp quy k c toỏn hc ln cỏc ng dng
trong thc tin vn cũn tn ti mt s u nhc im, c th nh sau:

c) u im v nhc im ca gii thut quy:
+ u im:
- Cụng c ng dng rt tt vi cỏc bi toỏn cú bn cht quy, th hin t duy rừ rng
v cht ch.
- Ngn gn v cú kh nng nh ngha mt tp hp ln cỏc i tng bng mt s cỏc
cõu lnh hu hn.
- Gii thut quy thc hin c nhiu bi toỏn m gii thut khụng quy khụng
th thc hin c.
- Chng trỡnh cú cha gii thut quy tr nờn ngn gn, d hiu, nờu bt bn cht
vn trong bi toỏn.
+ Nhc im:
- Chng trỡnh cú s dng phng phỏp quy tn rt nhiu b nh hn khi khụng
dung quy vỡ c mi ln gi quy li cn thờm mt vựng nh mi trong khi vựng nh
c vn duy trỡ cha c gii phúng.
- Tc thc hin chng trỡnh chm hn khi khụng dng quy.
- Do quy lu tr cỏc d liu trung gian vo Stack nờn nu lu nhiu b d liu ln
trờn Stack cú th gõy ra hin tng trn Stack.
3. quy quay lui:

GV: Trần Ngọc Dơng

8


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
a) Khỏi nim quy quay lui:
Quay lui (Backtracking) l phng phỏp tỡm kim li gii cho cỏc bi toỏn m
nghim ca nú l mt hay mt tp cu hỡn tha món ng thi 2 tớnh cht P v Q, trong
ú:

+ P: L cỏch xỏc nh mt cu hỡnh.
+ Q: Tớnh dng ca bi toỏn.
Hay nh ngha cỏch khỏc l:
Thut toỏn quay lui dựng gii bi toỏn lit kờ cỏc cu hỡnh. Mi cu hỡnh c xõy
dng bng cỏch xõy dng tng phn t, mi phn t c chn bng cỏch th tt c cỏc
kh nng.
Vớ d 1:
Gi s cu hỡnh lit kờ cú dng a[1..n], khi ú thut toỏn quay lui thc hin qua cỏc bc
1)
Xột tt c cỏc giỏ tr a[1] cú th nhn, th a[1] nhn ln lt cỏc giỏ tr ú. Vi mi
giỏ tr th gỏn cho a[1] ta s:
2)
Xột tt c cỏc giỏ tr a[2] cú th nhn, th cho a[2] nhn ln lt cỏc giỏ tr ú. Vi
mi giỏ tr th gỏn cho a[2] li xột tip cỏc kh nng chn a[3]... c tip tc nh vy cho
n bc:
.....
n) Xột tt c cỏc giỏ tr a[n] cú th nhn, th cho a[n] nhn ln lt cỏc giỏ tr ú, thụng bỏo
cu hỡnh tỡm c (a[1], a[2], ..., a[n])
Vớ d 2:
Lit kờ tt c cỏc hoỏn v n s t nhiờn nguyờn dng u tiờn theo th t tng dn
ca t in:
N = 3: gm cỏc hoỏn v: 123, 132, 213, 231, 312, 321
b) Gii thut tng quỏt ca quy quay lui:
Procedure TRY(i: integer);
Var k: integer;
Begin
For k:=1 to n do
Begin
Chn bc i th k
If i c THEN

Begin
Ghi nhn bc i
If iTry(i+1)

GV: Trần Ngọc Dơng

9


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
Else
In kt qu
B vic ghi nhn
End;
End;
End;
- Th tc bt u hot ng vi Try(1).
- Phõn tớch gii thut:
Nu mt kh nng j no ú phự hp cho x i thỡ xỏc nh xi theo kh nng j. Thng
phi thờm thao tỏc ghi nhn trng thỏi mi ca bi toỏn h tr cho bc quay lui.
Nu i=n thỡ ta cú c mt li gii, ngc li thỡ tin hnh bc i+1 xỏc nh x i+1
Nu khụng cú kh nng no chp nhn c cho x i thỡ ta lựi li bc trc (i-1)
xỏc nh li thnh phn xi-1
Nu mt kh nng j no ú phự hp cho x i thỡ xỏc nh xi theo kh nng j. Thng
phi thờm thao tỏc ghi nhn trng thỏi mi ca bi toỏn h tr cho bc quay lui.
Nu i=n thỡ ta cú c mt li gii, ngc li thỡ tin hnh bc i+1 xỏc nh x i+1.
Nu khụng cú kh nng no chp nhn c cho x i thỡ ta lựi li bc trc (i-1)
xỏc nh li thnh phn xi-1.

- V bn cht ca quy quay lui l quỏ trỡnh tỡm kim theo chiu sõu, chỳng ta cú th mụ
t quỏ trỡnh tỡm kim theo s cõy nh phõn nh sau:
Try(1)
Try(2)

Try(2
)
Try(3)

Try(3)

Try(3)

Try(3)

p dng: Vi bi toỏn lit kờ tt c cỏc hoỏn v n s t nhiờn nguyờn dng u tiờn theo
th t tng dn ca t in: Cho N = 3:
- Try(k): Tỡm thnh phn th k ca hoỏn v
- Duyt tp cỏc phng ỏn chn: {1, 2, , N}
- Chp nhn c k: Khi k cha c chn trc ú.
- Thc hin bc chn: ỏnh du k ó chn.
- Thnh cụng: Khi chn c thnh phn th k = N
- Thụng bỏo kt qu: Hin th N s ca hoỏn v

GV: Trần Ngọc Dơng

10


Một số kinh nghiệm giải toán bằng phơng pháp đệ

quy trong ôn thi HSG
- Hy chn: ỏnh du k cha c chn.
c) Nột c trng ca phng phỏp quy quay lui:
Cỏc bc hng ti li gii cui cựng ca bi toỏn hon ton c lm th.
Ti mt bc:
Nu cú mt la chn thỡ ghi nhn li la chn v tin hnh cỏc bc th tip
theo.
Ngc li thỡ lm li bc trc, xúa b s ghi nhn v quay v th cỏc la
chn cũn li.
d) u v nhc im:
+ u im: Vic quay lui l th tt c cỏc t hp tỡm c mt li gii. Th mnh ca
phng phỏp ny l nhiu ci t trỏnh c vic phi th nhiu trng hp cha hon
chnh, nh ú gim thi gian chy.
+ Nhc im: Trong trng hp xu nht phc tp ca quay lui vn l cp s m. Vỡ
nú mc phi cỏc nhc im sau:
o Ri vo tỡnh trng "thrashing tht bi": quỏ trỡnh tỡm kim c gp phi b tc vi
o

cựng mt nguyờn nhõn.
Thc hin cỏc cụng vic d tha: Mi ln chỳng ta quay lui, chỳng ta cn phi ỏnh

o

giỏ li li gii trong khi ụi lỳc iu ú khụng cn thit.
Khụng sm phỏt hin c cỏc kh nng b b tc trong tng lai. Quay lui chun,

khụng cú c ch nhỡn v tng lai nhn bit c nhỏnh tỡm kim s i vo b tc.
4. Phng phỏp kh quy:
a) Kh quy l gỡ?
Kh quy õy l bin mt th tc quy thnh mt th tc ch cha vũng lp m

khụng nh hng gỡ n cỏc yu t khỏc, ch khụng phi l thay i thut toỏn.
b) Ti sao phi kh quy ?
Kh quy l mt vic lm phc tp v khú khn. hm n! ta cú th dựng mt thut
toỏn khụng quy, nhng trong mt s bi toỏn, quy l bt buc. Tuy nhiờn ụi khi,
s hn hp ca b nh dnh cho chng trỡnh; hoc ngụn ng mỏy khụng cú quy, vỡ
vy cỏc trỡnh biờn dch u phi cú nhim v kh quy.
c) Kh quy nh th no ?
Kh quy thc cht l chỳng ta phi lm cụng vic ca mt trỡnh biờn dch i vi
mt th tc, ú l: t tt c cỏc giỏ tr ca cỏc bin cc b v a ch ca ch th k tip
vo Stack, quy nh cỏc giỏ tr tham s cho th tc v chuyn ti v trớ bt u th tc, thc
hin ln lt tng cõu lnh. Sau khi th tc hon tt thỡ nú phi ly ra khi ngn xp a ch
tr v v cỏc giỏ tr ca cỏc bin cc b, khụi phc cỏc bin v chuyn ti a ch tr v.
Vớ d: Tớnh N!

GV: Trần Ngọc Dơng

11


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
Phng phỏp quy
Function gt(n: Word): Longint;
Begin
If n = 0 then gt : =1
Else gt := n*gt(n - 1);
End;

Phng phỏp kh quy
Function giaithua(n: Word): Longint;

var k : Word;
GT : longint ;
Begin
GT := 1 ;
For k:= 1 to n do GT := GT * k ;
giaithua:= GT ;
end ;
5. S khỏc nhau gia quy v lp: S so sỏnh trong phn ny giỳp hc sinh phõn bit
tt hn vic ỏp dng cỏc thut toỏn tng ng gii toỏn mt cỏch linh hot.
Ging nhau:
- C 2 phng phỏp u liờn quan n lp.
- u phi cú iu kin kim tra tớnh dng ca vũng lp.
Khỏc nhau:
quy
- S dng cu trỳc la chn
- S dng vũng lp tng minh

Lp (khụng quy)
- S dng cu trỳc lp
- Quỏ trỡnh lp bng cỏch s dng liờn tc
cỏc li gi hm
- Dng khi n trng hp c s (trng - Dng khi iu kin trong vũng lp sai.
hp suy bin.
- Tn thi gian v b nh khi x lý.
- Chng trỡnh chy nhanh v s dng ớt b
nh.
Lu ý: Mc dự phng phỏp lp vn c s dng cho nhiu bi toỏn, tuy nhiờn tn ti
nhiu bi toỏn ch cú th gii bng quy.

GV: Trần Ngọc Dơng


12


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
II. GII PHP NNG CAO HIU QU ễN LUYN THI HSG THễNG QUA CC
BI TP V D QUY, KH QUY V QUY QUAY LUI.
Nh ó cp trờn phn u ca SKKN, sau khi phõn tớch cỏc khỏi nim, u-nhc
im ca tng i tng quy, quy quay lui, kh quy tụi s xõy dng cỏc bi toỏn
t n gin n phc tp, mi bi toỏn cú th cú mt phng phỏp hoc c 3 phng phỏp
tng ng vi cỏc i tng trờn nhm giỳp cho hc sinh ỏp dng linh hot trong quỏ
trỡnh xõy dng thut toỏn (code c th nm trong phn ph lc). c bit mi bi toỏn s
cú b test (ghi trờn a CD) hc sinh ti u c thut toỏn ca mỡnh cng nh to
hng thỳ trong hc tp.
1. Cỏc bi tp c bn v quy v khụng quy:
BI 1: Cho n l mt s nguyờn dng, hóy tớnh ly tha an

quy
Function LT(a,n: Word): Longint;
Begin
If n = 0 then LT := 1
else LT := a * LT(a,n - 1);
End;

Lp (khụng quy)
Function LT (a: Longint;n: Word): Longint;
Var i: Word; S: Longint;
Begin
S:=1;

For i:=1 To n Do S:=S*a;
LT:=S;
End;

BI 2: Cho n l mt s nguyờn dng, tớnh tng S=1+2+3+...+n

quy
Function S(k: Word):longint;
Begin
If k=1 then S:=1
else If k>1 then S:=S(k-1) + k;
End;

Lp (khụng quy)
Function S(n:Word):longint;
Var P:longint; i:Word;
Begin
If n=0 then P:=1
Else Begin
P:=1;
For i:=1 To n Do P := P+i;
End;
S:=P;
End;

BI 3: Cho n l mt s nguyờn dng, Tỡm s fibonaxi th n

quy
Function Fibo(n:longint):longint;
Begin

If ((n=0)or(n=1)) then Fibo:=1
else Fibo:=Fibo(n-2)+Fibo(n-1);

GV: Trần Ngọc Dơng

Lp (khụng quy)
function Fibo(n : int64):int64;
var f0, f1, fi:int64;
i :integer;
begin
if n<=1 then exit;
13


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
End; // CHY CHM KHI N=45

f0:=0; f1:=1;
for i:=2 to n do
begin
fi:=f1 + f0; f0:=f1; f1:=fi;
end;
fibo:=fi;
end;

BI 4: Tỡm c chung ln nht ca 2 s nguyờn dng.

quy
Function UCLN(m,n:longint):longint;

Begin
If(m=n) then UCLN:= m
else
If (m>n) then UCLN:=UCLN(m-n,n)
else UCLN:=UCLN(m,n-m);
End;

Lp (khụng quy)
Function UCLN(m,n:longint):longint;
Begin
While m<>n do
If m>n then m:=m-n else n:=n-m;
UCLN:=m;
End;

2. Cỏc bi tp quy v quy quay lui:
BI 1: Lit kờ tt c cỏc hoỏn v n s t nhiờn nguyờn dng u tiờn theo th t
tng dn ca t in:
Vớ d: N = 3 gm cỏc hoỏn v: 123, 132, 213, 231, 312, 321
Hng dn:
- Vi N=1 thỡ ch cú 1 hoỏn v duy nht l: 1.
- Vi N= 2 thỡ cú 2 hoỏn v l:
+ Khi chn 1 l s ng u, ta cú hoỏn v: 1 2
+ Khi chn 2 l s ng u, ta cú hoỏn v: 2 1
- Vi N=3:
+ Khi chn 1 l s ng u, ta cú 2 hoỏn v: 1 2 3; 1 3 2
+ Khi chn 2 l s ng u, ta cú 2 hoỏn v: 2 1 3; 2 3 1
+ Khi chn 3 l s ng u, ta cú 2 hoỏn v: 3 2 1; 3 1 2
.....
Vi tp hp N s, khi chn mt trong cỏc s t 1 n N, ta s cú cỏc hoỏn v gm: s

ng u ó chn v mt trong cỏc hoỏn v ca tp s {1..N}.
Nh vy, ta nhn thy cú th gii bi toỏn ny bng cỏch dựng thut toỏn quy quay lui.
Ta cú:
- Try(j): thc hin chn s th j cho hoỏn v.
- Cỏc phng ỏn chn: Cú N phng ỏn chn, i = 1, 2, 3..., N.

GV: Trần Ngọc Dơng

14


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
- Chn c: khi giỏ tr i cha c chn.
- Phng phỏp t chc lu tr: Dựng mt mng mt chiu KTra1 cú N phn t mang kiu
d liu Boolean. Giỏ tr khi to ban u ca cỏc phn t u l True
KTra1
True
True
True
.
True
i
1
2
3
.
n
Giỏ tr i cha c chn khi KTra1[i]= True
- Thc hin bc i th j:

+ ỏnh du giỏ tr c chn: KTra1[i]:= False.
+ Gỏn giỏ tr ca i cho s th j:
- Cỏch t chc lu tr: Dựng mt mng mt chiu KTra2 cú N phn t lu cỏc giỏ tr ó
c chn:

KTra2
True
True
True
.
True
j
1
2
3
.
n
Lu vt: KTra2[j]:=i;
- Thnh cụng: Khi ó chn N s ( j=N).
- Hy bc i th j: gỏn giỏ tr True cho KTra1[i]: KTra1[i]: =True;
Thut toỏn: (Code tham kho trong phn ph lc)
procedure try(j:byte);
var i,k:byte;
begin
for i:=1 to n do
if ktra1[i]=true then
begin
ktra1[i]:=false;
ktra2[j]:=i;
if j=n then

begin
for k:=1 to n do write (ktra2[k],' '); writeln;
end
else try(j+1);
ktra1[i]:=true;
end;
end;
Chng trỡnh chớnh: thc hin gi try(1);
BI 2: Lit kờ dóy nh phõn cú di n
Biu din dóy nh phõn cú di n di dng a[1..n]. ta s lit kờ cỏc dóy nh phõn
bng cỏch th dựng cỏc giỏ tr {0,1} gỏn cho a[i]. Vi mi giỏ tr th gỏn cho a[i] li th
cỏc giỏ tr cú th gỏn cho a[i+1]. Vớ d vi n=3, cõy tỡm kim quay lui nh sau:

GV: Trần Ngọc Dơng

15


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG

Thut toỏn: (Code tham kho trong phn ph lc)
procedure try(i:integer);
var j: integer;
Begin
for j := 0 to 1 do
{xột cỏc giỏ tr cú th gỏn cho a[i]}
begin
a[i] := j;
{th a[i]}

if i=n then xuat {nu th n cu hỡnh cui thỡ in kt qu}
else try(i+1); {nu cha phi cu hỡnh cui thỡ gi quy chn tip
a[i+1]}
end;
end;
Chng trỡnh chớnh: thc hin gi try(1);
BI 3: Bi toỏn rỳt tin t ng ATM
Mt mỏy rỳt tin t ng ATM cú n (n<=20) t tin cú giỏ tr t 1,t2,,tn. Hóy a ra mt
cỏch tr vi s tin ỳng bng S.
D liu vo t file ATM.INP cú dng:
- Dũng u l 2 s n v s
- Dũng 2 gm n s t1,t2,,tn
Kt qu ra file ATM.OUT cú dng: Nu cú th tr ỳng S thỡ a ra cỏch tr, nu
khụng thỡ ghi -1. Vớ d:
ATM.INP

ATM.OUT
20 20 50 50 50 100 100

10 390
200 10 20 20 50 50 50 50 100 100
Thut toỏn: (Code tham kho trong phn ph lc)
procedure xuat; {tớnh cỏch tr}
procedure try(i:integer);
var j:integer;
begin

GV: Trần Ngọc Dơng

16



Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
for j:=0 to 1 do
if kt=false then
begin
a[i]:=j;
if i=n then xuat else try(i+1);
end;
end;
BEGIN
{c v ghi kt qu}
END.
BI 4: Dóy s
Cho dóy s nguyờn a1,a2,..an. s ap (1 < p < n) c gi l mt s trung bỡnh cng trong
dóy nu tn ti 3 ch s i, j, k (1 < i, j, k < n) ụi mt khỏc nhau sao cho ap = (ai + aj + ak)/3.
Yờu cu: Cho n v dóy s a1 a2,.. an. Hóy tỡm s lng cỏc s trung bỡnh cng trong dóy.
D liu vo: T tp TBC.INP
Dũng u ghi s nguyờn dng n (3 < n < 1000)
Dũng th hai cha n s nguyờn ai (|ai|< 108) mi s cỏch nhau bi du cỏch.
Kt qu ra : Ghi vo tp TBC.OUT s lng cỏc s trung Bỡnh cng trong dóy.
Vớ d:
TBC.INP
TBC.OUT
5
2
43635
7
5

6452897
Thut toỏn: (Code tham kho trong phn ph lc)
Procedure try(i:integer);
var j:integer;
begin
for j:=1 to n do
if b[j]=0 then
begin
a[i]:=j;
if a[i]>a[i-1] then
if i=3 then xuat else
begin
b[j]:=1;
try(i+1);
b[j]:=0;
end;
end;
end;
BI 5: Tin khỏch sn

GV: Trần Ngọc Dơng

17


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
Trong dp nghi l 30 thỏng 4 v 1 thỏng 5 va qua do cựng t ngh vi ngy gi t
Hựng Vng 10 thỏng 3(õm lch) nờn s ngy ngh l tng lờn. Vỡ th lng khỏch du lch
v Nha Trang tham quan cng tng k lc, dn n tinh trng cỏc khỏch sn

õy chỏy phũng. Khỏch sn Quang Huy ch cũn mt phũng nờn quyt nh cho thuờ
phũng ny theo hỡnh thc tha thun v giỏ c. Sau khi tng hp cỏc n t hng, khỏch
sn nhn c n n t hng, trong ú n t hng th i ng ký ngy bt u l a i, ngy
tr phũng l bi v chp nhn tr s tin thuờ phũng l c i. Do cú nhiu n t hng, thi
gian t phũng li chng chộo nhau, s tin khỏch hng chp nhn tr cho khỏch sn cng
khỏc nhau nờn ban qun lý khỏch sn ang rt khú khn khụng bit nhn li hay t chi
khỏch hng no.
Yờu cu: Vit chng trỡnh giỳp khỏch sn nhn n t phũng sao cho li nhun thu c
l ln nht.
Lu ý: Theo iu l ca khỏch sn, khỏch hng phi tr phũng trc 12 gi tra, khỏch
hng khỏc cú th nhn phũng t 12 gi trong mt ngy.
D liu vo: c ghi trờn tp khachsan.inp bao gm:
- Dũng th nht l s nguyờn n (1 n 12000) th hin s n t hng.
- n dũng tip theo gm 3 s nguyờn a i, bi v ci. Mi s cỏch nhau mt khong trng vi rng
buc(l ai bi 100, 0 ci 1000).
D liu ra: lu trong tp khachsan.out vi mt s nguyờn th hin s tin ln nht.
Vớ d:
khachsan.inp
3
128
236
476

khachsan.out
20

khachsan.inp
4
145
138

354
469

khachsan.out
17

Thut toỏn: (Code tham kho trong phn ph lc)
procedure try(i:byte);
var j:byte;
begin
for j:=1 to n do
if b[j]=0 then
begin
a[i]:=j;
if a[i]>a[i-1] then
if vao[a[i]]>=ra[a[i-1]] then
if i=k then xuat
{kiem tra tuan tu cac hoan vi}
else
begin
b[j]:=1;
try(i+1);

GV: Trần Ngọc Dơng

18


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG

b[j]:=0;
end;
end;
end;
* Ghi chỳ: Cỏc bi toỏn kốm theo gii thut, test c b sung thờm trong phn ph lc v
a CD.
3. Kt qu t c:
Vi mc ớch nõng cao hiu qu ụn thi hc sinh gii bn thõn tụi luụn tỡm tũi v ỏp
dng mi phng phỏp gii quyt vn , c bit l nhng bi toỏn khú. Do ú phng
phỏp quy c ỏp dng trờn mt s bi toỏn nhm trang b cho cỏc em mt s kin thc
gii quyt bng nhiu cỏch, trong ú cú phõn tớch v thut toỏn, b nh lu tr v tc x
lý chng trỡnh.
Bn thõn tụi nhn thy vic phõn tớch v ỏp dng phng phỏp quy, kh quy v
quy quay lui gii mt s bi toỏn giỳp cho cỏc i tng tham gia t c mt s kt
qu sau:
i vi giỏo viờn tham gia ging dy:
- Tng cng tip thu cỏc kin thc t duy gii thut, bi dng v trau di kin thc.
- Quỏ trỡnh ụn thi hc sinh gii khụng phi ch l cỏch truyn t kin thc mt chiu,
m bn thõn giỏo viờn cng c hc tp t cỏc em hc sinh.
- Thụng qua cỏc bi toỏn gii bng phng phỏp quy, kh quy, quy quay lui
giỳp giỏo viờn cú kin thc rừ nột hn trong vic phõn tớch thut toỏn v lm cho
chng trỡnh mt hn khi núi v tc x lý, khụng gian lu tr.
- Xõy dng cỏc test cho chng trỡnh to hng thỳ hc tp cng nh l th nghim
nhng c trng v nhc im ca phng phỏp quy.
i vi hc sinh trc tip tham gia ụn luyn:
- Bit phõn tớch, ỏnh giỏ gii thut t ú xõy dng chng trỡnh hon thin hn,
nhm vột tt c cỏc test trong thi.
- Hng thỳ hc tp thụng qua cỏch chm im t cỏc test c giỏo viờn xõy dng.
- Kt qu cỏc nm ụn thi ca hc sinh:
TT

1.
2.
3.
4.
5.

H v tờn
Nguyn Th Thu Trang
Nguyn Th c
ng c Mnh
Trn Tun Anh
Phm Hong Quõn

GV: Trần Ngọc Dơng

Gii
KK
Ba
Ba
KK
KK

Nm hc
2015
2017
2017
2018
2018
19



Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
C. KT LUN V KIN NGH
I. Kt lun:
Vi mc ớch luụn hng ti kt qu tt nht trong quỏ trỡnh ụn thi HSG, vic bn thõn
giỏo viờn ging dy luụn phi cp nht kin thc v luụn phi cú tớnh sỏng to l iu tt
yu.
Tựy vo kh nng tip cn ca hc sinh m vic ỏp dng cỏc kin thc mi v mc
khú l khỏc nhau. Do ú i vi nhng bi toỏn thiờn v hng gii quyt bng phng
phỏp quy thụng thng c ỏp dng i vi nhng hc sinh cú kh nng t gii 3 tr
lờn, vic ỏp dng i vi nhng hc sinh mc t duy thut toỏn yu hn s cú tớnh kh
thi khụng cao, vỡ bn thõn cỏc em cha phõn tớch c phc tp ca thut toỏn, vựng
nh lu tr khi thc hin li gi quy (vựng nh tm lu tr giỏ tr khi cha thc hin).
II. Nhng kin ngh - xut:
Trong quỏ trỡnh ụn luyn, bn thõn tụi nhn thy vic ụn thi cú kt qu cao tht s
khụng phi d dng, bi b chi phi cỏc yu t nh:
- Hc sinh khụng mun thi mụn Tin hc vỡ mụn ny khụng thi i hc, cao ng.
- T duy lp trỡnh phc tp, hc sinh d chỏn nn.
Chớnh vỡ vy tụi mnh dn xut vn ụn luyn thi hc sinh gii mụn Tin hc nh
sau:
- Bn thõn cỏc cỏn b giỏo viờn, c bit l Ban Giỏm hiu nh trng cng nh giỏo
viờn ch nhim cn ng viờn, khuyn khớch to ng lc cỏc em tham gia.
- Ti cỏc n v trng THPT khụng phi l trng im, vic tuyn hc sinh l rt
khú cú cht lng, nờn cn phi ng viờn cỏc em tham gia cú th thi 2 mụn (vỡ
mụn Tin hc thi vo bui chiu tỏch bit vi cỏc mụn t nhiờn thi vo bui sỏng).

XC NHN CA HIU TRNG

Thanh Húa, ngy 10 thỏng 5 nm 2018

Tụi xin cam oan õy l SKKN ca mỡnh vit,
khụng sao chộp ni dung ca ngi khỏc.
(Ký v ghi rừ h tờn)

Trn Ngc Dng

GV: Trần Ngọc Dơng

20


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
DANH MC
SNG KIN KINH NGHIM C HI NG SNG KIN KINH
NGHIM NGNH GIO DC XP LOI T C TR LấN

H v tờn tỏc gi: Trn Ngc Dng
Chc v v n v cụng tỏc: Giỏo viờn, trng THPT Nụng Cng 4

TT

1.
2.

3.

4.

Tờn ti SKKN

Mt s kinh nghim xõy dng giỏo ỏn
in t trong dy hc.
Mt s kinh nghim thit k bi ging
in t E-Learning.
Mt s kinh nghim dy hc tớch hp
chng trỡnh mó ngun m (Open
Office) vo vic dy hc son tho
vn bn Chng III, SGK lp 10.
Mt s kinh nghim xõy dng h
thng mng ni b khụng dõy (WLAN) nhm nõng cao hiu qu s
dng phn mm VEMIS

Xp Nm
loi cp
C
B

S, ngy, thỏng, nm ca
quyt nh cụng nhn, c
quan ban hnh Q

Q s: 932/Q-SGD ngy
11/12/2008.
Q s: 539/Q-SGD&T
2011
ngy 22/10/2011.

2008

B


2014

Q s: 753/Q-SGD&T
ngy 03/11/2014.

C

2016

Q s: 972/Q-SGD&T
ngy 24/11/2016.

TI LIU THAM KHO:
[1] Nguyn Hi Lc - Nguyn Thanh Tiờn, Bi ging ngụn ng lp trỡnh Pascal, i hc s
phm Hu.
[2] Xuõn Lụi, Cu trỳc d liu v gii thut, Nh xut bn khoa hc v k thut.
[3] Cỏc ti liu v quy trờn Internet.

GV: Trần Ngọc Dơng

21


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
PH LC
CI T CC BI TP TIấU BIU V QUY, QUY QUAY LUI
TRONG ễN THI HSG (CODE V TEST TRONG A CD)
1. Cỏc bi tp c bn v quy:

BI 1: Cho n l mt s nguyờn dng, hóy tớnh ly
tha an
Const fi='LUYTHUA.inp'; fo=' LUYTHUA.out';
Var a,n: longint;
f:text;
Procedure Doc;
Begin
Assign(f,fi); Reset(f); Readln(f,a,n);
Close(f);
End;
Function lt(a,n: longint): int64;
Begin
If n = 0 then lt := 1 else lt := a * lt(a,n - 1);
End;
Procedure Ghi;
Begin
Assign(f,fo); Rewrite(f); Writeln(f,lt(a,n));
Close(f);
End;
Begin
Doc;Ghi;
End.
BI 2: Cho n l mt s nguyờn dng, tớnh tng
S=1+2+3+...+n
Const fi='Tong.inp'; fo='Tong.out';
Var n:longint;
f:text;
Procedure Doc;
Begin
Assign(f,fi); Reset(f); Readln(f,n); Close(f);

End;
Function S(k:longint): int64;
Begin
If k=1 then S:=1
else If k>1 then S:=S(k-1) + k;
End;
Procedure Ghi;
Begin

GV: Trần Ngọc Dơng

22


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
Assign(f,fo); Rewrite(f);
Writeln(f,S(n));
Close(f);
End;
Begin
Doc; Ghi;
End.
Bi 3: Bi toỏn v biu dóy s Phi-bụ-na-xi.
Dóy s Phi-bụ-na-xi c nh ngha nh sau: F0 = 0; F1 = 1; FN = FN-1 + FN-2 vi N2;
Yờu cu: Vit chng trỡnh tỡm s hng th N ca dóy Phi-bụ-na-xi.
D liu: Vo t file vn bn BAI2.INP gm 1 dũng duy nht ghi s N.
Kt qu: Ghi ra file vn bn cú tờn BAI2.OUT l s hng th N ca dóy.
Vớ d:


BAI2.INP

BAI2.OUT

BAI2.INP

3
2
8
Const fi='Fibonaxi.inp';
// CHY CHM KHI N=45
fo='Fibonaxi.out';
Var a:longint; f:text;
Procedure Doc;
Begin
Assign(f,fi);
Reset(f); Readln(f,a);
Close(f);
End;
Function Fibo(n:longint):int64;
Begin
If n=0 then Fibo:=0;
If ((n=1)or(n=2)) then Fibo:=1
else Fibo:=Fibo(n-2)+Fibo(n-1);
End;
Procedure Ghi;
Begin
Assign(f,fo); Rewrite(f); Write(f,Fibo(a));
Close(f);
End;

Begin
Doc;Ghi;
End.

GV: Trần Ngọc Dơng

BAI2.OUT
21

23


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
BI 4: Tỡm c chung ln nht ca 2 s nguyờn dng.

quy
const fi='UCLN.INP'; fo='UCLN.OUT';
Var a,b:int64; f:text;
Function UCLN(x,y:int64):int64;
Begin
if x mod y = 0 then UCLN:=y else
UCLN:=UCLN(y,x mod y);
end;
Begin
assign(f,fi); reset(f); readln(f,a,b);
close(f);
assign(f,fo); rewrite(f);
writeln(f,UCLN(a,b)); close(f);
end.


Khụng quy
Const fi='UCLN.INP'; fo='UCLN.OUT';
var m,n: int64; f:text;
function UCLN(a, b: int64):int64;
var x,y,r: int64;
Begin
x:= b; y:= a;
while y <> 0 do
begin
r:= x mod y;
x:= y;
y:= r;
end;
UCLN:= x;
End;
begin
assign(f,fi); reset(f); readln(f,m,n);
close(f);
assign(f,fo); rewrite(f); write(f,
UCLN(m,n));
close(f);
end.

* CC BI TP C BN GII TNG T:
1) Tớnh S(n) = 1^2 + 2^2 + 3^2 + ... + (n-1)^2 + n^2
2) Tớnh S(n) = 1 + 1/2 + 1/3 + ... + 1/n
3) Tớnh S(n) = 1/2 + 1/4 + ... + 1/2n
4) Tớnh S(n) = 1 + 1/3 + 1/5 + ... + 1/(2n+1)
5) Tớnh S(n) = 1/(1*2) + 1/(2*3) + 1/( n(*n-1) )

6) Tớnh S(n) = 1/2 + 2/3 + 3/4 + ... + n/(n+1)
7) Tớnh S(n) = 1/2 + 3/4 + 5/6 + ... + (2n+1)/(2n+2)
8) Tớnh S(n) = 1 + 1.2 + 1.2.3 + .... + 1.2.3....n
9) Tớnh S(n) = 1 + 1/(1+2) + 1/(1+2+3) + ... + 1/(1+2+3+...+n)
10)Hóy m s lng ch s ca s nguyờn dng n
11)Hóy tớnh tng cỏc ch s ca s nguyờn dng n
12)Hóy tỡm ch s o ngc ca s nguyờn dng n
13)Tỡm ch s ln nht ca s nguyờn dng n
14)Hóy kim tra s nguyờn dng n cú ton ch s l hay khụng ?
15) Lit kờ cỏc chnh hp lp chp k ca n phn t
16) Lit kờ cỏc tp con k phn t ca n s nguyờn u tiờn.(cỏc phn t khỏc nhau)

GV: Trần Ngọc Dơng

24


Một số kinh nghiệm giải toán bằng phơng pháp đệ
quy trong ôn thi HSG
17) T vớ d 1 trờn hóy chnh sa c dóy nh phõn cú di n nhng khụng cú 2 s
0 k nhau.
18) Cho xõu s ch gm cỏc kớ tớ t 'A' n 'Z' (cỏc kớ t ụi mt khỏc nhau). Hóy lit kờ tt
c cỏc hoỏn v khỏc nhau ca xõu s.
19) Cho s nguyờn dng n (n<=20). Hóy lit kờ tt c cỏc xõu di n ch gm 2 kớ t A
hoc B m khụng cú kớ t B no ng cnh nhau.
2. Cỏc bi tp nõng cao v quy v quy quay lui:
BI 1: Lit kờ tt c cỏc hoỏn v n s t nhiờn nguyờn dng u tiờn theo th t
tng dn ca t in:
Vớ d: N = 3 gm cỏc hoỏn v: 123, 132, 213, 231, 312, 321
Code tham kho:

const
nmax=10000; fi='HV.INP'; fo='HV.OUT';
type
data = longint;
var n:data; f:text;
dd:array[1..nmax] of boolean;
res:array[1..nmax]of data;
procedure xuat;
var i:data;
begin
assign(f,fo); rewrite(f);
for i:=1 to n do
begin write(f,res[i]); write(res[i]); end; writeln; writeln(f);
close(f);
end;
procedure try(i:data);
var j:data;
begin
if i>n then xuat
else
for j:=1 to n do
if not dd[j] then
begin
dd[j]:=true;
res[i]:=j;
try(i+1);
dd[j]:=false;
end;
end;


GV: Trần Ngọc Dơng

25


×