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?

rogp10 viết 19:31 ngày 01/10/2018

Đáp án phức tạp hơn bạn nghĩ

Dao Huy viết 19:31 ngày 01/10/2018

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 ạ?

Bài liên quan
0