01/10/2018, 17:27
Nâng cao tháp Hà Nội
Em đã code ok bài toán tháp Hà Nội thông thường nhưng em muốn nâng cao nó lên bằng cách:
Các vòng chỉ được chuyển theo hướng vòng tròn là A -> B, B -> C và C -> A. Ngoài ra không được chuyển ngược lại vào theo hướng khác.
Nhưng có một vấn đề xảy ra khi em code như thế này:
void Chuyen(int n, char a, char b, char c){
if (n==1)
cout<<a<<" -> "<<b<<endl;
else{
Chuyen(n-1,a,b,c);
Chuyen(n-1,b,c,a);
Chuyen(1,a,b,c);
Chuyen(n-1,c,a,b);
Chuyen(n-1,a,b,c);
}
}
Thì nó lại tạo ra những bước thừa thãi như A đến B đến C rồi lại về A.
Em muốn tham khảo xem có các cách khắc phục nào ko?
Bài liên quan
Đáp án phức tạp hơn bạn nghĩ
Là sao ạ, em chưa hiểu lắm. Liệu còn các trường hợp lỗi sai nào khác ạ?