1. Trang chủ
  2. » Ngoại Ngữ

De thi tin QT IOI 19915

2 4 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 2
Dung lượng 131,45 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hãy viết chương trình nhập một số nguyên N (<=10), sử dụng thủ tục trên để hiển thị tất cả các S-term trên màn hình.. Xét một phép tính với các S-term.[r]

Trang 1

V S-TERMS

S-term là một chuỗi gồm các ký tự S và dấu ngoặc đơn được định nghĩa một cách đệ quy như sau: S là

một S-term, và nếu M và N là các s-term, thì (MN) cũng là một s-term

Ví dụ:

((((SS)(SS))S)(SS))

Các dấu ngoặc đơn bên phải không chứa thông tin gì mới, do đó có thể bỏ chúng đi, ví dụ (MN thay cho (MN), do đó chuỗi ban đầu trở thành:

((((SS(SSS(SS

1 Hãy viết một thủ tục "tạo chuỗi" để tạo ra các S-term: thủ tục của bạn phải sinh ra n (n = độ dài = số

ký tự S trong chuỗi) tệp văn bản chứa tất cả các S-term có độ dài lần lượt là 1, , n Các S-term được ngăn cách bằng dấu chấm phảy";" Kết thúc S-term cuối cùng trong mỗi tệp văn bản là một dấu chấm"." Hãy viết chương trình nhập một số nguyên N (<=10), sử dụng thủ tục trên để hiển thị tất cả các S-term trên màn hình

Xét một phép tính với các term Quy tắc S duy nhất được sử dụng là: bất kỳ chuỗi con nào của một S-term có dạng (((SA)B)C), trong đó A, B và C là các s-S-term đều có thể viết dưới dạng: ((AC)(BC)) ứng dụng của quy tắc này trên một S-term được gọi là rút gọn S-term

Có nhiều cách khác nhau để chọn một chuỗi con để áp dụng quy tắc S Một ứng dụng khác của quy tắc trên với một S-term được gọi là "chuẩn hóa" S-term

Ví dụ về một chuỗi thu nhỏ:

((((SS)(SS))S)(SS)) -> (((SS)((SS)S))(SS)) -> ((S(SS))(((SS)S)(SS))) -> ((S(SS))((S(SS))(S(SS))))

2 Chọn một cấu trúc dữ liệu phù hợp để biểu diễn S-term có thể hỗ trợ áp dụng quy tắc S Hãy viết hai thủ tục "đọc chuỗi" và "in chuỗi" chuyển S-term từ cách biểu diễn "tạo chuỗi" sang cách biểu diễn của bạn và ngược lại Chương trình của bạn phải thể hiện được quá trình chuyển đó

3 Hãy viết thủ tục "thu nhỏ" biểu diễn một bước thu nhỏ theo quy tắc S trên một chuỗi con của một S-term Chương trình phải minh họa được điều này

4 Hãy viết thủ tục "chuẩn hóa": cho trước một S-term, hãy chọn một chuỗi con để áp dụng quy tắc S đến khi không thu nhỏ được nữa hoặc khi số lần thu nhỏ đã vượt quá mức tối đa, ví dụ 30 Chương trình phải minh họa được quá trình này

5 Cuối cùng, kết hợp tất cả các thủ tục trên thành một chương trình có thể:

a) yêu cầu người dùng nhập độ dài n,

b) Dùng các S-term độ dài n do quy trình "tạo chuỗi" tạo ra,

c) Chuyển các S-term sang cách biểu diễn của bạn,

d) Chuẩn hóa (nếu có thể),

e) Ghi ra kết quả chuẩn hóa các s-term,

f) Ghi ra số bước thu nhỏ với mỗi s-term, hoặc đoạn thông điệp 'not normalized' khi không chuẩn hóa

được sau 30 bước, Và

g) Báo cáo tỉ số giữa số lần không chuẩn hóa được trên tổng số của S-term với độ dài n cho trước Bai Toan 5 - 1991

Ngày đăng: 05/05/2021, 11:43

w