Tháp Hà Nội 1

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 900 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Trò chơi tháp Hà Nội 1 là trò chơi biến thể của tháp Hà Nội gồm \(2n\) đĩa với \(n\) kích thước khác nhau (mỗi kích thước đĩa có đúng hai cái đĩa).

Trò chơi bắt đầu bằng trạng thái các đĩa được chồng lên nhau ở cọc \(A\). Yêu cầu của trò chơi là chuyển toàn bộ số đĩa từ cọc \(A\) sang cọc \(C\), tuân theo các quy tắc sau:

  • Chỉ sử dụng 3 cọc để chuyển (\(A, B, C\));
  • Một lần chỉ được di chuyển một đĩa nằm trên cùng từ cọc này sang cọc khác;
  • Một đĩa chỉ được đặt lên một đĩa không nhỏ hơn (đĩa có cùng kích thước được phép đặt lên nhau).

Yêu cầu: Hãy tìm cách chuyển toàn bộ đĩa thành một chồng đĩa ở cọc \(C\).

Input

  • Dòng đầu chứa số nguyên dương \(n\).

Output

  • Dòng đầu chứa số nguyên \(s\) là số lần chuyển đĩa;
  • Dòng thứ \(j\) (\(j = 1, 2, \dots, s\)) trong \(s\) dòng tiếp theo, mỗi dòng gồm đúng hai kí tự mô tả một thao tác chuyển đĩa. Cụ thể, kí tự thứ nhất là tên cọc chứa đĩa cần chuyển, kí tự thứ hai là tên cọc mà đĩa chuyển tới.

Constraints

  • \(1 \le n \le 10\).

Example

Test 1

Input
1
Output
2
AC
AC
Note

Với \(n=1\), ta có \(2 \cdot 1 = 2\) đĩa cùng kích thước ở cọc \(A\). Ta lần lượt chuyển từng đĩa từ \(A\) sang \(C\). Vì hai đĩa cùng kích thước nên quy tắc "đĩa đặt lên đĩa không nhỏ hơn" vẫn được thỏa mãn.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.