Cho dãy số nguyên dương .
Tìm ước chung lớn nhất của hai số sao cho giá trị đó là lớn nhất.
Duyệt tất cả các cặp số của dãy và tính ước chung lớn nhất, lấy kết quả là giá trị lớn nhất.
Độ phức tạp thời gian: .
Nhận thấy , ta có thể thực hiện thuật toán như sau:
Với mỗi số từ , ta duyệt qua tất cả các bội của , nếu gặp một số tồn tại trong dãy , ta tăng lên đơn vị.
Sau khi chạy xong thuật toán trên, ta có là số lượng số trong dãy nhận là ước.
Đáp án của bài toán là lớn nhất sao cho .
Độ phức tạp thời gian: .
Thuật toán trên được gọi là "sàng ước". Nhiều người nhầm tưởng thuật toán này có độ phức tạp thời gian lớn, tuy nhiên, vì số lượng bội số không ngừng giảm khi số tăng lên, nên thực chất thuật toán này chạy rất nhanh.
Nếu coi là giới hạn để duyệt , ta có thể tính được độ phức tạp thời gian của thuật toán này như sau:
Cho dãy số nguyên dương .
Xác định độ dài dãy con tăng dài nhất của dãy , sao cho số sau phải lớn hơn số trước ít nhất .
Dãy con: Một dãy số được hình thành bằng cách xóa một số phần tử (hoặc không xoá phần tử nào) trong dãy ban đầu và không làm thay đổi thứ tự của các phần tử còn lại.
VD: là một dãy con của dãy .
: Tổng các số từ .
Quay lui thử tất cả các dãy con.
Độ phức tạp thời gian: .
Quy hoạch động cơ bản.
Định nghĩa là dãy con dài nhất thỏa mãn yêu cầu đề bài và bắt buộc kết thúc tại .
Khởi gán
Công thức quy hoạch động:
Kết quả: .
Độ phức tạp thời gian: .
Cho ô vuông, mỗi ô vuông có giá trị năng lượng .
Nếu đang ở ô vuông thứ , chỉ có thể nhảy đến ô .
Để di chuyển từ ô đến ô cần chi phí năng lượng là .
Tìm chi phí nhỏ nhất để đi từ ô đến ô .
Quy hoạch động cơ bản.
Định nghĩa là chi phí nhỏ nhất để nhảy từ ô đến ô .
Công thức quy hoạch động:
Kết quả: .
Độ phức tạp thời gian: .