河内之塔算法实现(c与python)

三根柱子A,B,C。A中有n个盘子,从大到小。将盘子从A移到C,且大的不能再小的盘子之上。每次移动一个

思路:将上面n-1个盘子看成一个盘子(做递归),第n个做为一个盘子,即移动两个盘子:
第一步:将n-1个从A移到B
第二步:将第n个从A移到C
第三步:将n-1个从B移到C

c代码:

#define _CRT_SECURE_NO_WARNINGS
#include
#include
void HeNeizhita(int n, char A, char B, char C)
{
    if (n == 1)
        printf("Move Sheet %d from %c to %c\n",n, A,C);
    else
        HeNeizhita(n - 1, A, C, B);
    {
        //HeNeizhita(n - 1, A, B, C);
        printf("Move Sheet %d from %c to %c\n", n, A, C);
        HeNeizhita(n - 1, B, A,C);
    }
}

int main()
{
    int n;
    printf("请输入盘子数:");
    scanf("%d", &n);
    HeNeizhita(n, 'A', 'B', 'C');
    system("pause");
    return 0;
}

python代码:

import sys
def HeNeizhita(n,A,B,C):
    if n==1:
        print ('move %d From %c to %c' %(n,A,C))
        pass
    else:
        HeNeizhita(n-1,A,C,B)
        print ('move %d From %c to %c' %(n,A,C))
        HeNeizhita(n-1,B,A,C)
        pass
    pass

if __name__=='__main__':
    n=sys.argv[1]
    HeNeizhita(int(n),'A','B','C')

你可能感兴趣的:(python,c++,算法)