Gợi ý ý tưởng bài Tháp Hà Nội không đệ quy, không dùng stack

Không biết có cao nhân nào có ý tưởng làm bài tháp hà nội không đệ quy cũng ko dùng stack ko ạ gợi ý giúp em với

4 Likes

Có thể dùng biểu diễn nhị phân nhé.
Vị trí đĩa lần i sẽ tương ứng với dãy nhị phân độ dài n (đĩa) ở thứ tự từ diển thứ i.

0 là chưa ra khỏi cọc, còn 1 là ra rồi.
Chữ số ở đầu đại diện cho đĩa lớn nhất.

Ví dụ:
Bước chuyển thứ 0 = 00000000… có nghĩa là n đĩa vẫn ở cọc ban đầu.
Bước chuyển thứ 2^n-1 = 11111111… nghĩa là n đĩa đã ở cọc đích.
Bước chuyển thứ i = 11011000… có hai đĩa lớn nhất trên cọc đích, đĩa tiếp theo trên cọc xuất phát, hai đĩa tiếp theo ở cọc trung gian, và ba đĩa tiếp theo nữa trên cọc xuất phát, …

Còn nếu mà chỉ cần biết bước i là cột bao nhiêu sang bao nhiêu thôi thì có công thức mà :smile:
(i & i - 1) % 3 \rightarrow ((i | i - 1) + 1) % 3
hoặc (i - (i & -i)) % 3 \rightarrow (i + (i & -i)) % 3

toán tử & với | là phép tính với bit

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?