1. Trang chủ >
  2. Giáo án - Bài giảng >
  3. Cao đẳng - Đại học >

PHẦN III: BÀI TOÁN ÁP DỤNG

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 (113.58 KB, 14 trang )


Ví dụ nếu X = [1, 3, 2, 3] thì dãy con tương ứng với chuỗi nhị phân b = 1010 là [1, 3].

Như vậy, số dãy con của X cũng chính là số chuỗi nhị phân có độ dài n chính là 2 n. Mặc

dù có thể với 2 chuỗi nhị phân khác nhau sẽ tương ứng với cùng một dãy con (với

mảng X = [1, 3, 2, 3], hai chuỗi 1100 và 1001 cùng tương ứng với dãy con [1, 3]), nhưng

nếu lập trình bình thường để duyệt tất cả các dãy con của X thì phải duyệt 2 n phần tử.

Với n = 100 thì có đến 2100≈ 1030 dãy con.

-



Phương án khả thi:



Phương án duyệt tất cả các dãy con để tìm kết quả tối ưu có độ phức tạp là O (2 n),

rõ ràng là không khả thi khi n lớn. Do đó chúng ta sẽ sử dụng thuật toán quy hoạch động

để giải bài toán.

3. Ý tưởng

- Đầu tiên xét for (int i=1; i
- Kiểm tra nếu a[i - 1] < = a [i] thì dãy tăng, ta thực hiện

{

maxT=lt[i-1]+1;

}

lt[i] = maxT;

if(maxT > maxTang)

{

maxTang = maxT;

}

Nếu a[i ] < = a [i - 1] thì dãy giảm, ta thực hiện

{

maxG=lg[i-1]+1;

}

lg[i]=maxG;



12



if(maxG > maxGiam)

{

maxGiam = maxG;

}

}

- Ta thực hiện xét các trường hợp như vậy cho đến phần tử cuối cùng. Sau đó so

sánh độ dài của các dãy con mà ta đã tìm được ở trên. Dãy nào có độ dài lớn nhất và liên

tiếp thì ta chọn. Nếu 2 dãy có độ dài bằng nhau thì kết quả sẽ trả ra cả 2 dãy.

4. Ví dụ mô phỏng thuật toán

Cho dãy X = { 12, 2, 3, 4, 6, 7, 1, 9, 10 } có giá trị i tương ứng từ 1 đến 9

i = 1, ta đưa 12 vào dãy, dãy có 1 phần tử

i = 2, ta xét 12< 2, dãy giảm, đưa 2 vào ta được dãy {12,2}

i = 3, ta thấy 2<3, dãy tăng, đưa 2,3 vào dãy ta được dãy mới {2,3}

i = 4, ta thấy 3< 4, dãy tăng, đưa 4 vào ta được dãy {2,3,4}

i = 5, ta thấy 4<6, dãy tăng, đưa 6 vào ta được {2,3,4,6}

i = 6, ta thấy 6< 7, dãy tăng, đưa 7 vào ta được {2,3,4,6,7}

i = 7, ta thấy 7> 1, dãy giảm, đưa 7,1 vào dãy mới {7,1}

i = 8, ta thấy 1< 9, dãy tăng, đưa 1,9 vào dãy mới {1,9}

i = 9, ta thấy 9< 10, dãy tăng, đưa 10 vào dãy ta được {1,9,10}

 Ta thấy dãy đơn điệu gồm các phần tử liên tiếp tăng dài nhất có 5 phần tử là dãy

{2,3,4,6,7}



13



TÀI LIỆU THAM KHẢO

1. Bài giảng cấu trúc dữ liệu và giải thuật – TS Đào Thanh Tĩnh – Trường học viện

kỹ thuật quân sự.

2. http://timtailieu.vn/tai-lieu/mot-so-bai-toan-quy-hoach-dong-dien-hinh-day-condon-dieu-dai-nhat-26099/

3. http://agreenet.vn/baiviet/laptrinh/?eq=Ak7wytsN1FioiDjzqOJaPQ

4. http://fit-hitu.edu.vn/forum/thread-1397.html

5. Giải thuật và lập trình – Lê Minh Hoàng – Đại học sư phạm Hà Nội, 1999 - 2002



14



Xem Thêm
Tải bản đầy đủ (.doc) (14 trang)

×