1 / 38

CHUONG 7 GII THUT QUY

2. M?c ti

Audrey
Télécharger la présentation

CHUONG 7 GII THUT QUY

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. CHUONG 7 GI?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.

More Related