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
Gợi ý ý tưởng bài Tháp Hà Nội không đệ quy, không dùng stack
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à
(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