1.Dễ
Ghi nhớ (memoisation) là gì?
- ALưu kết quả của các lời gọi hàm để các lời gọi lặp lại được trả lời từ bộ nhớ
- BGiải phóng bộ nhớ sau khi một hàm trả về
- CTự động chuyển đệ quy thành vòng lặp tương đương để không cần ngăn xếp lời gọi
- DViết chú thích bên cạnh từng dòng mã
2.Dễ
Sắp xếp trộn dùng chiến lược thiết kế nào?
- AQuy hoạch động
- BLựa chọn tham lam
- CChia để trị
- DVét cạn
3.Dễ
Một thuật toán O(n) mất 3 giây khi n = 1 triệu. Khoảng bao lâu khi n = 2 triệu?
- A3 giây
- B12 giây
- C6 giây
- D9 giây
4.Trung bình
Tìm kiếm nhị phân cần khoảng bao nhiêu phép so sánh trong trường hợp xấu nhất trên một mảng đã sắp xếp có 1,000,000 phần tử?
- AKhoảng 100
- BKhoảng 1,000
- CKhoảng 20
- DKhoảng 500,000
5.Trung bình
Bạn sắp xếp một mảng n phần tử một lần rồi trả lời k truy vấn thuộc về bằng tìm kiếm nhị phân. Tổng chi phí là bao nhiêu?
- AO(n + k)
- BO(k n log n)
- CO(n log n + k log n)
- DO(nk)
6.Trung bình
Độ phức tạp thời gian của thuật toán Bellman–Ford trên đồ thị có V đỉnh và E cạnh là gì?
- AO(V³ × E)
- BO(E log V)
- CO(V + E)
- DO(V × E)
7.Khó
Thuật toán nào tìm cây khung nhỏ nhất bằng cách liên tục thêm cạnh rẻ nhất không tạo chu trình?
- AThuật toán Dijkstra
- BFloyd–Warshall
- CThuật toán Kruskal
- DThuật toán Prim bắt đầu từ một nút
8.Khó
Vì sao tra cứu trung bình trong bảng băm là O(1) nhưng trường hợp xấu nhất là O(n)?
- ANhiều khóa có thể va chạm vào cùng một ngăn
- BMảng có truy cập O(n)
- CHàm băm chậm
- DCác khóa phải được sắp xếp trước
Đáp án
- 1. A · Lưu kết quả của các lời gọi hàm để các lời gọi lặp lại được trả lời từ bộ nhớ
- 2. C · Chia để trị
- 3. C · 6 giây
- 4. C · Khoảng 20
- 5. C · O(n log n + k log n)
- 6. D · O(V × E)
- 7. C · Thuật toán Kruskal
- 8. A · Nhiều khóa có thể va chạm vào cùng một ngăn
Lời giải đầy đủ từng bước: hãy luyện chủ đề này trên examproblems.com.