三分球


私信TA

用户名:korey

访问量:677

签 名:

等  级
排  名 8722
经  验 1208
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校 成都信息工程大学
专  业

  自我简介:

解题思路:汉诺塔问题,就将其细分化

注意事项:

参考代码:

#include
using namespace std;
int fun(int n, char x, char y, char z, int& k) //不管盘子有多少个,都想成1个和n-1个,
{
    if (n == 0)
    {
        return 1;  //返回递归次数
    }
    else
    {
        k += fun(n - 1, x, z, y, k);  //从原桩通过目标杆到辅助杆
        printf("%2d. Move disk %d from %c to %c\n", k, n, x, z);//这里要注意输出格式的问题
        fun(n - 1, y, x, z, k);//从辅助杆通过原桩到目标桩
    }
}
int main()
{
    int n;
    int k = 0;
    char x = 'X', y = 'Y', z = 'Z';
    while (cin >> n)
    {
        fun(n, x, y, z, k);
        cout << endl;
        k = 0;  //置零,便于下一步操作
    }
    return 0;
}


 

0.0分

1 人评分

  评论区

  • «
  • »