E N D
1. CHUONG 7GI?I THU?T ? QUY
2. 2
3. 3 n t?p Stack: C?u trc (thu?ng l m?ng) c co ch? x? l: vo sau ra tru?c.
Queue: C?u trc (thu?ng l m?ng) c co ch? x? l: vo tru?c ra tru?c.
Stack v Queue du?c g?i l danh sch h?n ch?.
Cc tc v? trn nhm tr? ni chung: Ki?m tra tr?ng, ki?m tra d?y, thm 1 ph?n t?, xa 1 ph?n t?.
4. 4 7.1- ? quy l g (Recursion) ?nh nghia tu?ng minh: Gi?i thch khi ni?m m?i b?ng nh?ng khi ni?m d c.
Ngu?i = ?ng v?t c?p cao.
?nh nghia lng vng: Gi?i thch 1 khi ni?m b?ng chnh khi ni?m d.
? quy: ua ra 1 d?nh nghia c s? d?ng chnh khi ni?m dang c?n d?nh nghia( quay v? ).
Ngu?i = con c?a hai ngu?i khc.
5. 5 ? quy l g?... Con ngu?i hi?u du?c d?nh nghia d? quy v d? quy c ch?n (di?u ki?n bin, di?u ki?n suy bi?n) c th? l bin ng?m d?nh.
Ngu?i = con c?a hai ngu?i khc ? Ng?m hi?u l c 2 ngu?i d?u tin.
Thu m?c = cc thu m?c con + cc t?p tin ? Ng?m hi?u: Hi?n nhin t?n t?i thu m?c g?c l c? ? dia.
6. 6 7.2- Ki?u d? li?u d? quy M?t ngu?i du?c m t? b?ng: tn, nam sinh, cha (m?t ngu?i khc), m? (m?t ngu?i khc).
struct NGUOI
{ char Ten[51];
int namsinh;
NGUOI cha;
NGUOI me;
};
7. 7 Ki?u d? li?u d? quy... S?a l?i:
struct NGUOI
{ char Ten[51];
int namsinh;
NGUOI* pCha;
NGUOI* pMe;
};
NGUOI x;
8. 8 7.3- Tc v? d? quy C th? di?n d?t nhi?u tc v? hu?ng d? quy.
1+2+3+...+ (n-2) + (n-1) + n
C?ng( 1 t?i n) = n + C?ng (1 t?i n-1)
i?u ki?n bin l di?u ki?n ngung khng d? quy n?a.
i?u ki?n bin: C?ng (1 t?i 1) l 1
C?ng (1 t?i n) = 1, n=1
n + C?ng (1 t?i n-1)
9. 9 7.4- Cch vi?t hm d? quy ?nh nghia tc v? d? quy theo ngn ng? t? nhin th? no th hm cung vi?t nhu th?.
Th d?: n! = 1*2*3*4*5*... * n
n! = 1, n<=1
n* (n-1)!
10. 10 Cch vi?t hm d? quy... n! = 1, n<=1
n* (n-1)!
11. 11 Luy?n t?p vi?t hm d? quy Tm tr? ph?n t? th? n c?a 1 c?p s? c?ng c s? h?ng d?u l a, cng sai l r
Un = a, n=1
r + Un-1
Tm tr? ph?n t? th? n c?a 1 c?p s? nhn c s? h?ng d?u l a, cng b?i l q
Un = a, n=1
q*Un-1
12. 12 Luy?n t?p vi?t hm d? quy Xu?t bi?u di?n nh? phn c?a 1 s? nguyn duong.
13 ? 1101
13. 13 Luy?n t?p vi?t hm d? quy...
14. 14 7.5- Phn lo?i hm d? quy Ty thu?c cch di?n d?t tc v? d? quy m c cc lo?i d? quy sau.
? quy tuy?n tnh.
? quy nh? phn.
? quy phi tuy?n
? quy h? tuong.
15. 15 7.7.1-? quy tuy?n tnh Thn hm g?i 1 l?n chnh n
Un = a , n=1 ( tr? th? n c?a c?p s? c?ng)
r + Un-1 , n>1
double U (int n, double a, double r)
{ if (n==1) return a;
return r + U(n-1,a,r);
}
16. 16 7.5.2-? quy nh? phn Thn hm g?i 2 l?n chnh n.
Chu?i s? Fibonacci: 1 1 2 3 5 8 13 ...
Un = 1, n=1,2
Un-2 + Un-1 , n>2
long Fibo (int n)
{ if (n<=2) return 1;
return Fibo(n-2) + Fibo(n-1);
}
17. 17 7.5.3-? quy phi tuy?n Thn hm l?p g?i 1 s? l?n chnh n
Un = n , n <6
Un-5 + Un-4 + Un-3 + Un-2 + Un-1 ,n >6
long U ( int n)
{ if (n<6) return n;
long S= 0;
for (int i = 5; i>0; i--) S+= U(n-i);
return S;
}
18. 18 7.5.4-? quy h? tuong 2 hm d? quy g?i nhau
Un = n , n<5
Un-1 + Gn-2 , n>=5
Gn = n-3 , n<8
Un-1 + Gn-2 , n>8
19. 19 7.6- K? thu?t tm gi?i thu?t d? quy Thng s? ha bi ton.
Tm cc di?u ki?n bin(ch?n), tm gi?i thu?t cho cc tnh hu?ng ny.
Tm gi?i thu?t t?ng qut theo hu?ng d? quy lui d?n v? tnh hu?ng b? ch?n.
20. 20 Tnh t?ng 1 m?ng a, n ph?n t? Thng s? ha: int*a, int n
i?u ki?n bin: M?ng 0 ph?n t? th t?ng b?ng 0.
Gi?i thu?t chung:
Sum(a,n) = a[0] + a[1] + a[2] + ... + a[n-2] +a[n-1]
Sum(a,n-1)
Sum (a,n) = 0 , n=0
a[n-1] + Sum(a, n-1)
V?i cc thu?t ton d? quy trn m?ng, ta nn gi?m d?n s? ph?n t? c?a m?ng.
21. 21 Tm tr? l?n nh?t c?a m?ng a, n ph?n t? Thng s? ha: int*a, int n
i?u ki?n bin: M?ng 1 ph?n t? th tr? l?n nh?t l a[0].
Gi?i thu?t chung:
Max(a,n) = a[0] , a[1] , a[2] , ... , a[n-2] , a[n-1]
Max(a,n-1)
Max (a,n) = a[0] , n=1
a[n-1] > Max(a, n-1)? a[n-1] : Max(a,n-1)
Thu?t ton d? quy tm tr? nh? nh?t c?a m?ng?
22. 22 Xu?t ngu?c 1 chu?i S= QWERT ? TREWQ
23. 23 Bi ton xu?t ngu?c 1 chu?i
24. 24 7.7- Bi ton Thp H N?i Tham kh?o gio trnh K? thu?t LT Nng cao, Tr?n Hong Th?, ?i h?c L?t, trang 17, file .pdf d g?i.
25. 25 Bi ton Thp H N?i
26. 26 Thp H N?i...
27. 27 7.8- Cch th?c thi 1 hm d? quy Xt hm tnh giai th?a c?a 5
28. 28 Cch th?c thi 1 hm d? quy Xt hm tnh giai th?a c?a 5
29. 29 Cch th?c thi 1 hm d? quy Xt hm tnh giai th?a c?a 5
30. 30 Cch th?c thi 1 hm d? quy Xt hm tnh giai th?a c?a 5
31. 31 Cch th?c thi 1 hm d? quy Xt hm tnh giai th?a c?a 5
32. 32 Cch th?c thi 1 hm d? quy Xt hm tnh giai th?a c?a 5
33. 33 Cch th?c thi 1 hm d? quy Xt hm tnh giai th?a c?a 5
34. 34 7.9- Nh?n xt v? hm d? quy
35. 35 7.10- Kh? d? quy L qu trnh chuy?n d?i 1 gi?i thu?t d? quy thnh gi?i thu?t khng d? quy.
Chua c gi?i php cho vi?c chuy?n d?i ny m?t cch t?ng qut.
Cch ti?p c?n:
Dng quan di?m d? quy d? tm gi?i thu?t cho bi ton.
M ha gi?i thu?t d? quy.
Kh? d? quy d? c gi?i thu?t khng-d?-quy.
36. 36 7.10.1- Kh? d? quy b?ng vng l?p tu?ng: Luu l?i cc tr? c?a cc l?n tnh ton tru?c lm d? li?u cho vi?c tnh ton c?a l?n sau.
i t? di?u ki?n bin di t?i di?u ki?n k?t thc.
37. 37 Th d?: Hm tnh giai th?a c?a n long GiaiThua( int n)
{ if (n<2) return 1;
return n * GiaiThua(n-1);
}
38. 38 Th d? hm tnh tr? th? n c?a dy Fibonacci: 1 1 2 3 5 8... long Fibo(int n)
{ if (n<=2) return 1; // hai ch?n
return Fibo(n-2) + Fibo (n-1);
}
39. 39 7.10.2- Kh? d? quy b?ng stack Kh?i t?o stack v?i s? ph?n t? ph h?p.
ua b? tham s? d?u vo stack.
Khi Stack khng tr?ng
{ - L?y b? tham s? ra kh?i stack;
- X? l cc tc v? co b?n ?ng v?i tham
s? ny. N?u g?p 1 tc v? d? quy th l?i dua
b? tham s? c?a tc v? d? quy tuong ?ng vo
stack.
}
40. 40 Bi ton thp H N?i kh?-d? quy
41. 41 Tm t?t Hm d? quy l hm m trong thn hm l?i g?i chnh n.
Hm d? quy km hi?u q?a v: t?n b? nh? va g?i hm qa nhi?u l?n. Tuy nhin vi?t hm d? quy r?t ng?n g?n.
Vng l?p v stack l nh?ng k? thu?t gip kh? gi?i thu?t d? quy.
42. 42 Bi t?p Vi?t chuong trnh xu?t n tr? d?u tin c?a 1 c?p s? c?ng c s? h?ng d?u l a (nh?p t? bn phm), cng sai r (nh?p t? bn phm). S? d?ng k? thu?t d? quy d? xy d?ng hm tnh tr? th? i c?a 1 c?p s? c?ng ny.
Dng k? thu?t d? quy d? gi?i phuong trnh f(x) trong kho?ng [a,b] v?i sai s? epsilon.
G?i px l pointer c?a nghi?m
if (f(a).f(b)>0) return NULL (khng c nghi?m)
else if (b-a <= epsilon) return &a;
else
{ c=(b+a)/2) ;
if (f(a).f(c)<=0) return Tm nghi?m trong do?n [a,c];
else return Tm nghi?m trong do?n [c,b];
}
43. 43 Bi t?p Vi?t chuong trnh nh?p 1 m?ng s? int, nh?p 1 tr? x, tm v? tr c x cu?i cng trong m?ng. Dng k? thu?t d? quy d? tm v? tr ny.
Tm x trong a[], n : -1 n?u n<0
n-1 n?u a[n-1]=x
Tm x trong a, n-1
Vi?t chuong trnh nh?p 1 ma tr?n vung cc s? int , nh?p 1 tr? x. Tm v? tr <dng,c?t> c x dng k? thu?t d? quy.