nrrt.net
当前位置:首页 >> 大一汉诺塔C语言问题,求代码 >>

大一汉诺塔C语言问题,求代码

#include int step=0; void move(char s, char t, int d){ int i,j; step++; printf("第 %d 步: %c->%c\n",step,s,t); } void hanoi(char a, char b, char c, int n){ if(n==1){ move(a,b,n); }else{ hanoi(a,c,b,n-1); move(a,b,n); hanoi(c,b,...

#include int sum; void move(char A,char B) { sum++; printf("%c-->%c\n",A,B); } void hanoi(char A,char B,char C,int n) { if(n==1) move(A,C); else { hanoi(A,C,B,n-1); move(A,B); hanoi(B,A,C,n-1); } } void main() { int n; scanf("%...

把n歌圆盘从a挪到c 当n = 1 的时候 直接诺就好了 麻烦的是 当n>1 的时候 这个时候你想要把n个圆盘从a挪到c 首先呢 要把上面的 n -1 个圆盘挪到b 再把最低下的1个挪到c 然后再把b柱上面的n-1个盘子挪到c 回来再看你的程序 就很明显了 f(n, a, b, ...

hanoi函数的功能是把第n个盘子和上面的所有盘子都移动到另一个柱子上,而move才是只移动一个盘子

hanoi(m,'A','B','C');这个算法的目的就是将m个积木块,从'A‘柱经过'B'柱移到'C‘柱上 给你照着代码讲吧。 void hanoi(int n,char one ,char two,char three) { void move(char x,char y);//声明打印函数 if(n==1) //如果只有一个积木块,直接将...

你是不理解1,2,3为啥换来换去是吗?

起始盘都在a上,要移动到b上,借助c=> 把n-1个从a移动到c上,借助b,把最大的一个移动到b上,再把n-1个从c移动到b上,借助a 所以你看到,柱子的角色是不停的在换,一个是出发点,一个是目的地,还有一个是中转站。

#include void hanoi(int n,char a,char b,char c) {if(n>1)hanoi(n-1,a,c,b); printf("%d from %c to %c\n",n,a,c); if(n>1)hanoi(n-1,b,a,c); } int main() {int n; scanf("%d",&n); hanoi(n,'A','B','C'); return 0; }

hanoi(n-1,a,c,b); /* 第一步:把A上部的n-1个盘子,借助C,先移动到B */move(n,a,c); /* 第二步:把A最底部的第n号盘子移动到C */hanoi(n-1,b,a,c); /* 第三步:把第一步移到B的n-1个盘子借助A移动到C *//************************************...

递归算法是我前些天写的,非递归是刚才找的,里面含递归和非递归。 递归算法: #include //递归求汉诺塔问题 void hanoi(int n, char A, char B, char C, int *time) { if (n>=1) { hanoi(n-1, A, C, B, time); move(A, C); (*time)++; hanoi(n-...

网站首页 | 网站地图
All rights reserved Powered by www.nrrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com