[Buổi 14][Củng cố đệ quy][ADV] Bài 1: Palindrome số bằng đệ quy trên mảng chữ số
Palindrome số bằng đệ quy trên mảng chữ số
Bối cảnh
Một chuỗi chữ số được lưu trong mảng ký tự. Bạn cần kiểm tra nó có đọc xuôi và ngược giống nhau không bằng recursion.
Thay vì string/STL, bài dùng mảng char đã quen và hai index left/right.
Yêu cầu
- Đọc n và n ký tự chữ số không có khoảng trắng.
- Viết hàm đệ quy
isPalindrome(a,left,right). - Nếu left>=right, trả true.
- Nếu a[left]!=a[right], trả false.
- Nếu bằng, gọi tiếp với left+1, right-1.
- In YES/NO.
Yêu cầu tổ chức code
Bắt buộc dùng recursion với hai index; không dùng std::string hoặc STL algorithms.
Online Judge chủ yếu chấm output. Giảng viên sẽ quan sát thêm cách tổ chức hàm khi review code để bảo đảm học viên luyện đúng kỹ năng của buổi.
Input
Dòng 1 n. Dòng 2 là chuỗi đúng n chữ số.
Output
YES hoặc NO.
Ràng buộc
1 ≤ n ≤ 3000.
Ví dụ 1
Input
5
12321
Output
YES
Giải thích
Ký tự ngoài cùng 1=1, tiếp theo 2=2, rồi tới giữa 3 nên chuỗi là palindrome.
Ví dụ 2
Input
4
1221
Output
YES
Giải thích
1=1 và 2=2, sau đó left>=right nên palindrome.
Thông tin học tập
- Module: M04
- Buổi: B14
- Loại bài: ADVANCED
- Độ khó: Hard
- Concepts: recursion, static arrays, two indices, palindrome checking, base case
- Giới hạn kiến thức: B01-B14
- Time limit: 2 second(s)
- Memory limit: 256 MB
- Point: 100
Comments