You are on page 1of 1

ĐỀ KIỂM TRA GIỮA KỲ

HỌC PHẦN: PHÂN TÍCH THIẾT KẾ GIẢI THUẬT


THỜI GIAN: 90 PHÚT

Lưu ý khi nộp bài: câu 1 và câu 2, câu 3 phần mô tả cách làm, xây dựng công thức,
đánh giá thuật toán có thể viết tay trên giấy hoặc làm trên word, nhưng nộp file PDF.
Source code câu 2, 3 nộp (file .cpp)

Câu 1 (3,0 điểm): phân tích, đánh giá độ phức tạp thuật toán đoạn chương trình sau:
int a = 0;
for (i = 0; i < n; i++) {
for (j = n; j > i; j--) {
a = a + i + j;
}
}
Câu 2 (4,0 điểm) Sử dụng chiến lược quay lui để viết chương trình cho bài toán
sau:
Cho hai số nguyên dương n và k, hãy tìm số nguyên lớn nhất có thể bằng cách thực hiện
tối đa k phép hoán đổi trên các chữ số của n.
Ví dụ:
input: n=132, k=1. Output: 312
input: n=254, k=2. Output: 542
Yêu cầu:
a. Mô tả cách làm.
b. Phân tích, đánh giá độ phức tạp của thuật toán mà mình sử dụng.
c. Cài đặt.

Câu 3 (3,0 điểm) Sử dụng chiến lược chia để trị, viết chương trình cho bài toán
sau:
Các chuỗi Fibonacci được định nghĩa đệ quy như sau:
g1=A, g2=B, gn= gn-2+gn-1 (ghép 2 chuỗi)
Tìm từ thứ M của chuỗi thứ N
Yêu cầu:
a. Mô tả cách làm, xây dựng công thức.
b. Phân tích, đánh giá độ phức tạp của thuật toán mà mình sử dụng.
c. Cài đặt
-------------------------------------------------HẾT---------------------------------------------

You might also like