经典指数          
原因
2381
浏览数
0
收藏数
 

汉诺塔一共为2*N,2个一样大小,有编号顺序每次只能移动一个大的不能叠在小得上面移动完之后,相同大小的编号必须和原来一样问最小要移动多少次?如A1 A2 B1 B2 C1 C2……这样叠,A

     举报   纠错  
 
切换
1 个答案

#include #include

void move(int n,char a,char b,char c) {     if(n==1)

        printf("\t%c->%c\n",a,c);   

//当n只有1个的时候直接从a移动到c     else     {        

move(n-1,a,c,b);            //第n-1个要从a通过c移动到b        

printf("\t%c->%c\n",a,c);        

move(n-1,b,a,c);            //n-1个移动过来之后b变开始盘,b通过a移动到c,这边很难理解    

} }  main() {    int n;    printf("please put

in the number you need to move:\n");    

scanf("%d",&n);     move(n,'a','b','c'); }

 
切换
撰写答案