趣味算法-Hanoi

来源:互联网 发布:gtv网络棋牌频道如何看 编辑:程序博客网 时间:2024/05/18 00:16

趣味算法-Hanoi:

主要是说明递归的思路。

A B C三个金属棒,有n个盘片,起始时盘片都在n上,要求把所以盘片都移动到C上可以利用B。原则大盘一定要在小盘下面。

思路:

1) 把起始位置上A的n-1个盘子移动到B上, 这时可以通过C,这时可以移动A上的第n个盘子。

2) 把B上的n-1个盘子在都移动到C上,这时可以通过A,这时达到目的,移动完成。


注意:参数的顺序和含义,否则容易造成混淆。

#include <stdio.h>void move(int n, char chStart, char chPass, char chEnd ){    if (n == 1)    {        printf("move %c  --->  %c \n", chStart, chEnd);        return;    }    move(n-1, chStart, chEnd, chPass);    printf("move %c  --->  %c \n", chStart, chEnd);    move(n-1, chPass, chStart, chEnd);}int main(){    int i = 0;    printf("Hanoi start ================\n");    move(3, 'A', 'B', 'C');    scanf("%d", &i);    return 0;}


原创粉丝点击