关闭

汉诺塔问题

2113人阅读 评论(0) 收藏 举报
#include <stdio.h>
#include <stdlib.h>
void hanoi(int, char, char, char);
void move(int, char, char);
int main(void)
{
    hanoi(3, 'A', 'B', 'C');
    return 0;
}
//将n个塔座从a搬到c,b为辅助
void hanoi(int n, char a, char b, char c)
{
    if (n > 0)
    {
        //先将n - 1个塔座从a搬到b,c为辅助
        hanoi(n - 1, a, c, b);
        //将第n个从a搬到c
        move(n, a, c);
        //再将n - 1个塔座从b搬到c,a为辅助
        hanoi(n - 1, b, a, c);
    }
}
void move(int n, char from, char to)
{
    printf("move %d from %c to %c\n", n, from, to);
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:132037次
    • 积分:3903
    • 等级:
    • 排名:第8359名
    • 原创:293篇
    • 转载:22篇
    • 译文:0篇
    • 评论:11条
    文章分类
    最新评论