栈的应用-汉诺塔

来源:互联网 发布:淘宝赌石最好赌出什么 编辑:程序博客网 时间:2024/06/01 09:55
/**< 2014年4月23日 *//**< 汉诺塔 */#include <stdio.h>/** \brief 把第n个盘子从位置a移动到位置b * * \param n 盘子的编号 * \param a 源位置 * \param b 目标位置 * \return * */void move(int n, char a, char b){    /**< 把第n个盘子从位置a移动到位置b */    printf("move %d: %c -> %c\n", n, a, b);}/** \brief 汉诺塔 * * \param n 盘子的个数 * \param a 源位置 * \param b 空闲的位置 * \param c 目标位置 * \return * */void hanoi(int n, char a, char b, char c){    /**< 只有一个盘子,把它直接移动过去就可以了 */if (1 == n){move(n, a, c);return;}    /**< 把a上面的n-1个盘子通过c移动到b上面去 */    hanoi(n-1, a, c, b);    /**< 移动第n个盘子从a到c上面去 */    move(n, a, c);    /**< 此时盘子都在b上面,再把b上面的n-1个盘子通过a移动到c上面去 */    hanoi(n-1, b, a, c);}int main(){int n = 0;printf("请输入汉诺塔的高度:");scanf("%d", &n);hanoi(n, 'A', 'B', 'C');return 0;}

0 0
原创粉丝点击