ハノイの塔

  1. //  Promblem
  2. //    hanoi
  3. #include <iostream>
  4. #include <string>
  5.  
  6. void solve(int x, std::string from, std::string to, std::string work){
  7. static unsigned int counter = 0;
  8. if(x == 1){
  9. std::cout << ++counter << ": " << from << " to " << to << std::endl;
  10. }else{
  11. solve(x-1, from, work, to);
  12. std::cout << ++counter << ": " << from << " to " << to << std::endl;
  13. solve(x-1, work, to, from);
  14. }
  15. }
  16.  
  17. int main() {
  18. const std::string FROM = "A";
  19. const std::string TO   = "B";
  20. const std::string WORK = "C";
  21.  
  22. //  Input the circle count
  23. int x;
  24. std::cout << "Input x > ";
  25. std::cin >> x;
  26.  
  27. solve(x, FROM, TO, WORK);
  28. return 0;
  29. }