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 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() {...

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

#includeint n,a[3][21];void hanoi(int m,int x,int y,int z){int i,j,k; if(m>1)hanoi(m-1,x,z,y); a[z][a[z][0]+1]=a[x][a[x][0]]; a[x][0]--; a[z][0]++; for(i=0;i0;j--) printf("%c",j>a[i][0]?'.':'0'+a[i][j]); if(i1)hanoi(m-1,y,x,z)...

假设三根柱子A/B/C,要从A移动到B,有n个盘子,那么可以设函数 hanoi(int n,char A ,char B,char C); 其中:n是盘子数量,A,B,C是柱子名字 先考虑一个盘子的情况 一个盘子的时候,显然,A直接放到B就可以了 多个盘子的情况 如果多个盘子,那么不...

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

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) //如果只有一个积木块,直接将...

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) {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; }

int game2()要改为int main()后才可编译运行: #include #include #define CSZL 10 #define FPZL 10 typedef struct hanoi { int n; char x,y,z; }hanoi; typedef struct Stack //定义栈结点 { hanoi *base,*top; int stacksize; }Stack; int In...

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