永发信息网

怎样做一个基于c#的在线编译系统

答案:1  悬赏:80  手机版
解决时间 2021-03-29 18:22
怎样做一个基于c#的在线编译系统
最佳答案
#include void move(char x,char y) { printf("%c-->%c\n",x,y); } void hanoi(int n,char one ,char two,char three) { if(n==1) move(one,three); else { hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } } main() { int m; printf("input the number of disks:"); scanf("%d",&m); printf("the step to moving %3d diskes:\n",m); hanoi(m,'A','B','C'); } 算法介绍: 其实算法非常简单,当盘子的个数为n时,移动的次数应等于2^n – 1(有兴趣的可以自己证明试试看)。后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上,根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放 A B C; 若n为奇数,按顺时针方向依次摆放 A C B。 (1)按顺时针方向把圆盘1从现在的柱子移动到下一根柱子,即当n为偶数时,若圆盘1在柱子A,则把它移动到B;若圆盘1在柱子B,则把它移动到C;若圆盘1在柱子C,则把它移动到A。 (2)接着,把另外两根柱子上可以移动的圆盘移动到新的柱子上。即把非空柱子上的圆盘移动到空柱子上,当两根柱子都非空时,移动较小的圆盘。这一步没有明确规定移动哪个圆盘,你可能以为会有多种可能性,其实不然,可实施的行动是唯一的。 (3)反复进行(1)(2)操作,最后就能按规定完成汉诺塔的移动。 所以结果非常简单,就是按照移动规则向一个方向移动金片: 如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C 汉诺塔问题也是程序设计中的经典递归问题,下面我们将给出递归和非递归的不同实现源代码。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求教maple中多元函数的定义问题。
苹果手机玩游戏发烫怎么回事?
歇后语,斧头掉到裤裆里下一句是啥?竹林里点
晶体fcc bcc hcp这些英语缩写的全称,方便记
花6万多钱读在职双证MPA,到底值不值
求助,考cfa需不需要买notes
被称为“周公转世”的王莽为何政权不堪一击?
液压床如何拆卸
杭州二套房契税是多少,怎样才算二套房
新君威保养一年多少钱
黄曲霉素(化学式为C17H12O6)广泛存在于变质
965主板支持什么cpu
关于舞蹈压软度的。。。。!!
如何用集成霍尔开关测量周期或转速?
详情跟详细这两个词怎么理解?
推荐资讯
今日排列三藏机图字谜正版保真
水深60公分怎么调漂
跟极有关的成语有哪些
有认识吕方杰,胡克明的吗
一个女生,被男朋友甩了,我该怎么安慰她?
12月份6度至1O度多云好钓鲫鱼吗
递延资产和递延负债怎么回事
我185cm 适合穿多大型号的衣服 本人比较偏瘦
什么是整体式锅炉?和立式、卧式有什么区别?
英国留学生申请德国签证,求助
想听无损音乐,需要买什么东西?
嫁人嫁什么样的人过日子好。比如能说会道,但
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?