c语言 汉诺塔

来源:百度知道 编辑:UC知道 时间:2024/05/10 08:35:27
输入任意阶数,输出汉诺塔的移动方案
格式如下:
*
***
*****
----------------------------------------------
***
***** *
----------------------------------------------

***** *** *
----------------------------------------------
*
***** ***
----------------------------------------------

*
*** *****
----------------------------------------------

* *** *****
----------------------------------------------
***
* *****
----------------------------------------------
*
*

void hanoi(int,char,char,char);
main()
{char sourcc='A',work='B',object='c';
int m;
printf("\nEnter the number of disk: "); scanf("%d",&m);
printf("The steps to moving disks: \n");
hanoi(m,sourcc,work,object);
}
void hanoi(int n,char sourcc,char work,char object)
{ if(n==1) move(sourcc,object);
else
{ hanoi(n-1,sourcc,object,work);
move(sourcc,object);
hanoi(n-1,work,sourcc,object);
}
}
move(char getone,char putone)
{printf("%c----->%c\n",getone,putone);
getch();
}

一个简单的递推问题,用A,B,C代表各柱子,你可以算N个塔了

你不知道改下呀,笨哦!用不就用*号嘛,多加个循环呀!!!!!!!!!!!把A,B,C换了就行了

这个比较简单的
例如要将X上的塔移动到Y塔上的话,你可以设置一个中间的变量Z,
然后if(x上只有一个元素的话)则直接可以计算出需要的步骤;
if(x上的元素>1的话)
将N-1个元素先移动到Z上然后在将N移动到Y上;
然后递归调用以上的方法来实现

我说的就是大体的算法 你可以先编写如果有问题的话可以联系我

你是画家吧~~~?~?~?