Giao diện mới của VnDoc Pro: Dễ sử dụng hơn - chỉ tập trung vào lớp bạn quan tâm. Vui lòng chọn lớp mà bạn quan tâm: Lưu và trải nghiệm
Đóng
Điểm danh hàng ngày
  • Hôm nay +3
  • Ngày 2 +3
  • Ngày 3 +3
  • Ngày 4 +3
  • Ngày 5 +3
  • Ngày 6 +3
  • Ngày 7 +5
Bạn đã điểm danh Hôm nay và nhận 3 điểm!
Nhắn tin Zalo VNDOC để nhận tư vấn mua gói Thành viên hoặc tải tài liệu Hotline hỗ trợ: 0936 120 169

Giải Chuyên đề Tin học 12 Cánh diều bài 3: Thực hành kiểu dữ liệu hàng đợi và ngăn xếp

Lớp: Lớp 12
Môn: Tin Học
Dạng tài liệu: Chuyên đề
Bộ sách: Cánh diều
Loại File: Word + PDF
Phân loại: Tài liệu Tính phí

Bài 3: Thực hành kiểu dữ liệu hàng đợi và ngăn xếp

VnDoc.com xin gửi tới bạn đọc bài viết Giải Chuyên đề Tin học 12 bài 3: Thực hành kiểu dữ liệu hàng đợi và ngăn xếp để bạn đọc cùng theo dõi. Mời các bạn cùng tham khảo thêm tại mục Tin học 12 Cánh diều nhé.

Vận dụng trang 20 Chuyên đề Tin 12 Cánh diều

Một xâu kí tự được gọi là có tính chất đối xứng nếu viết từ trái sang phải cũng giống như viết từ phải sang trái (không phân biệt chữ viết hoa và chữ viết thường). Ví dụ: “level”, “madam”, “mom”, “civic”, “Able was I ere I saw Elba" là những xấu có tính chất đối xứng. Em hãy thực hiện các yêu cầu sau:

a) Dựa trên cơ chế hoạt động vào trước ra trước của hàng đợi và vào sau ra trước của ngăn xếp, em hãy thiết kế thuật toán sử dụng một ngăn xếp và một hàng đợi để kiểm tra xem một xâu kí tự bất kì có tính chất đối xứng hay không.

b) Viết hàm doixang(s) thực hiện thuật toán xây dựng được ở câu a) để kiểm tra xem xâu s có tính chất đối xứng hay không.

c) Viết chương trình hoàn thiện, yêu cầu người sử dụng nhập vào một xâu kí tự, rồi gọi hàm doixung(s) đã viết được ở câu b) để kiểm tra xâu nhập vào có tính chất đối xứng hay không. Chạy chương trình với các xâu kí tự sau: “-123454321", "112", "racecar" và cho biết kết quả thu được.

Lời giải:

a) Dựa trên cơ chế hoạt động vào trước ra trước của hàng đợi và vào sau ra trước của ngăn xếp (stack), em thiết kế thuật toán sử dụng một ngăn xếp và một hàng đợi (queue), để kiểm tra xem một xâu kí tự bất kì có tính chất đối xứng hay không như sau:

- Chuyển xâu kí tự về cùng một định dạng (chữ thường) và loại bỏ các kí tự không phải chữ cái hoặc số để tránh các yếu tố không cần thiết.

- Đưa từng kí tự của xâu vào cả ngăn xếp và hàng đợi.

- Lần lượt lấy từng kí tự ra từ ngăn xếp và hàng đợi và so sánh chúng. Nếu tất cả các kí tự lấy ra đều giống nhau, thì xâu kí tự có tính chất đối xứng, ngược lại thì không.

b) Viết hàm doixang(s) thực hiện thuật toán xây dựng được ở câu a) để kiểm tra xem xâu s có tính chất đối xứng hay không như sau:

from collections import deque

def clean_string(s):

return ''.join(char.lower() for char in s if char.isalnum())

def doixung(s):

cleaned_s = clean_string(s)

stack = []

queue = deque()

for char in cleaned_s:

stack.append(char)

queue.append(char)

while stack:

if stack.pop() != queue.popleft():

return False

return True

c) Viết chương trình hoàn thiện yêu cầu người sử dụng nhập vào một xâu kí tự, rồi gọi hàm doixung(s) để kiểm tra xâu nhập vào có tính chất đối xứng hay không và chạy chương trình với các xâu kí tự đã cho:

def main():

strings_to_test = ["-123454321", "112", "racecar"]

for s in strings_to_test:

if doixung(s):

print(f"'{s}' có tính chất đối xứng.")

else:

print(f"'{s}' không có tính chất đối xứng.")

user_input = input("Nhập vào một xâu kí tự: ")

if doixung(user_input):

print(f"'{user_input}' có tính chất đối xứng.")

else:

print(f"'{user_input}' không có tính chất đối xứng.")

if __name__ == "__main__":

main()

Kết quả thu được như sau:

"-123454321": có tính chất đối xứng.

"112": không có tính chất đối xứng.

"racecar": có tính chất đối xứng.

Chọn file muốn tải về:
Đóng Chỉ thành viên VnDoc PRO/PROPLUS tải được nội dung này!
Đóng
79.000 / tháng
Đặc quyền các gói Thành viên
PRO
Phổ biến nhất
PRO+
Tải tài liệu Cao cấp 1 Lớp
30 lượt tải tài liệu
Xem nội dung bài viết
Trải nghiệm Không quảng cáo
Làm bài trắc nghiệm không giới hạn
Mua cả năm Tiết kiệm tới 48%

Có thể bạn quan tâm

Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
Sắp xếp theo
🖼️

Tin học 12 Cánh diều

Xem thêm
🖼️

Gợi ý cho bạn

Xem thêm