Slide thuật toán ứng dụng chương 4 chia để trị

31 8 1
Slide thuật toán ứng dụng chương  4 chia để trị

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

.c om an co ng THUẬT TOÁN ỨNG DỤNG cu u du o ng th CHIA ĐỂ TRỊ Phạm Quang Dũng Bộ môn KHMT dungpq@soict.hust.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om NộI dung  Tổng quan chia để trị ng  Ví dụ minh họa cu u du o ng th an  Giảm để trị co  Độ phức tạp chia để trị CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Tổng quan chia để trị  Chia toán cần giải ban đầu thành toán cu u du o ng th an co ng độc lập  Giải (trị) toán  Tổng hợp lời giải toán để dẫn lời giải toán xuất phát CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Ví dụ minh họa  Bài tốn dãy dài nhất: cho dãy số nguyên a = a1, ng th an co ng a2, …, an Tìm dãy gồm số liên tiếp phần tử có tổng lớn  Phân chia: ký hiệu P(i, j) lời giải tốn tìm dãy liên tiếp dãy ai, ai+1,…, aj có tổng cực đại  Tổng hợp lời giải du o  Ký hiệu PL(i, j) lời giải tốn tìm dãy liên tiếp cu u dãy ai, ai+1,…, aj cho phần tử cuối aj có tổng cực đại  Ký hiệu PR(i, j) lời giải tốn tìm dãy liên tiếp dãy ai, ai+1,…, aj cho phần tử có tổng cực đại CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Ví dụ minh họa  Xét đoạn [l,l+1, ,r] Ký hiệu m = (l+r)/2 P(l,m) th m m+1 P(m+1,r) cu u du o ng l an co ng  P(l,r) = MAX{P(l, m), P(m+1,r), PL(l,m) + PR(m+1,r)} PL(l,m) PR(m+1,r) CuuDuongThanCong.com https://fb.com/tailieudientucntt r .c om Ví dụ minh họa #include using namespace std; ng #define INF 1e9 co #define MAX 1000000 an int a[MAX]; th int n; ng void input(){ cin >> n; cu u } du o for(int i = 0; i < n; i++) cin >> a[i]; CuuDuongThanCong.com https://fb.com/tailieudientucntt ng co an th ng int PL(int l, int r){ int rs = -INF; int s = 0; for(int i = r; i >= l; i ){ s += a[i]; rs = max(rs,s); } return rs; } c om Ví dụ minh họa cu u du o int PR(int l, int r){ int rs = -INF; int s = 0; for(int i = l; i 1, c >  Nếu a > bk T(n) = (𝑛𝑙𝑜𝑔𝑏 𝑎 )  Nếu a = bk T(n) = (𝑛𝑘 𝑙𝑜𝑔𝑛) với logn = 𝑙𝑜𝑔2 𝑛  Nếu a < bk T(n) = (𝑛𝑘 ) 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn  Trộn hai dãy xếp thành dãy j 10 co i ng xếp 20 an 11 23 cu ta k u du o ng th a 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn  Trộn hai dãy xếp thành dãy j 10 co i ng xếp 20 an 11 23 du o ng th a u cu ta k 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn  Trộn hai dãy xếp thành dãy j 10 co i ng xếp 20 an 11 23 du o ng th a u cu ta k 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn  Trộn hai dãy xếp thành dãy xếp j co ng i 20 an 10 11 23 du o ng th a u cu ta k 10 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn  Trộn hai dãy xếp thành dãy xếp j co ng i 20 an 10 11 23 du o ng th a u cu ta k 10 11 21 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn  Trộn hai dãy xếp thành dãy j co ng xếp 20 an 10 11 23 du o ng th a u cu ta k 10 11 20 23 22 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn  Trộn hai dãy xếp thành dãy co ng xếp 20 an 10 11 23 ng th a cu ta u du o copy 10 11 20 23 23 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn  Trộn hai dãy xếp thành dãy co ng xếp ta 10 11 20 23 10 11 20 23 an cu u du o ng th a 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Sắp xếp trộn #include using namespace std; ng #define MAX 1000000 co int a[MAX]; int n; th an int ta[MAX]; ng void input(){ cin >> n; } cu void print(){ u du o for(int i = 0; i < n; i++) cin>> a[i]; for(int i = 0; i < n; i++) cout a[j]){ta[k] = a[j]; j++;} } } du o else{ta[k] = a[i]; i++;} } cu u for(int k = b; k

Ngày đăng: 03/09/2021, 12:30

Tài liệu cùng người dùng

Tài liệu liên quan