Cho hai xâu ký tự S1 và S2, mỗi xâu có độ dài khơng q 100 ký tự. Cho phép thực hiện các phép biến đổi sau đây đối với xâu ký tự:
1. Thay thế một ký tự nào đó bởi ký tự khác 2. Đổi chỗ hai ký tự liền nhau
3. Chèn một ký tự vào sau vị trí nào đó 4. Xố bớt 1 ký tự
Ta gọi khoảng cách giữa hai xâu S1 và S2 là số ít nhất các phép biến đổi nêu trên cần áp dụng đối
với xâu S1 để biến nó thành xâu S2.
u cầu: Tính khoảng cách giữa 2 xâu S1, S2 cho trước và chỉ ra thứ tự các phép biến đổi.
Ví dụ: Giả sử S1 = 'Barney'; S2 = 'brawny'. Khoảng cách giữa 2 xâu là 4. Dãy các phép biến đổi
cần thực hiện là:
1. Thay ký tự 1 của S1 (B) bởi b
2. Đổi chỗ ký tự thứ 2 (a) và thứ 3 (r) của S1.
3. Chèn ký tự w vào S1 sau ký tự thứ 3. 4. Xoá ký tự thứ 5 của S1.
Dãy các phép biến đổi có thể mô tả như sau:
'Barney' → 'barney' → 'braney' → 'brawney' → 'brawny'
Dữ liệu: vào từ file văn bản STREDIT.INP có cấu trúc như sau:
• Dịng đầu tiên chứa xâu S1 • Dịng thứ hai chứa xâu S2
Kết quả: Ghi ra file văn bản STREDIT.OUT
• Dịng đầu tiên ghi số lượng các phép biến đổi cần sử dụng K
• Mỗi dịng i trong số K dịng tiếp theo mơ tả phép biến đổi được sử dụng ở lần thứ i gồm các tham số sau: các tham số ghi trên 1 dòng ghi cách nhau 1 dấu cách.
♦ 1, P, C (nếu là phép thay ký tự tại vị trí P bằng ký tự C) ♦ 2, I, I + 1 (nếu là phép đổi chỗ 2 ký tự thứ I và thứ I + 1) ♦ 3, P, C (nếu là phép chèn ký tự C vào sau vị trí P) ♦ 4, P (nếu là phép xố ký tự thứ P) Ví dụ: STREDIT.INP STREDIT.OUT Barney brawny 4 1 1 b 2 2 3