问题:汉诺塔问题用c语言实现3个柱子,1,2,3号。1号柱子自上至下依次放1,2,3号方块。依次移动一个方块,最后实现在3号柱子上依旧是1,2,3顺序的方块排列。输出结果:how many disks?:3from where?[1-3]:1to where?[1-3]:3move disk 1 from pole 1 to pole 3move disk 2 from pole 1 to pole 2move disk 1 from pole 3 to pole 2move disk 3 from pole 1 to pole 3move disk 1 from pole 2 to pole 1move disk 2 from pole 2 to pole 3move disk 1 from pole 1 to pole 3
细节自己改
#include"stdio.h" void hanoi(int n,char a,char b,char c); void move(char a,int n,char c); void main() { int n; char a,b,c; printf("汉诺塔问题\n"); printf("n="); scanf("%d",&n); a='A'; b='B'; c='C'; hanoi(n,a,b,c); } void hanoi(int n,char a,char b,char c) //将n个盘子从a通过b移动到c { if(n==1) move(a,1,c); //将编号为1的盘子从a移动到c else { hanoi(n-1,a,c,b); move(a,n,c);//将编号为n的盘子从a移动到c hanoi(n-1,b,a,c); } } void move(char a,int n,char c) { printf("move %d from %c to %c\n",n,a,c); } 如果你对汉诺塔问题用c语言实现3个柱子,1,2,3号。1号柱子自上至下依次放1,2,3号方块。依次移动一个方块,最后实现在3号柱子上依旧是1,2,3顺序的方块排列。输出结果:how many disks?:3from where?[1-3]:1to where?[1-3]:3move disk 1 from pole 1 to pole 3move disk 2 from pole 1 to pole 2move disk 1 from pole 3 to pole 2move disk 3 from pole 1 to pole 3move disk 1 from pole 2 to pole 1move disk 2 from pole 2 to pole 3move disk 1 from pole 1 to pole 3这个问题有好的意见或
建议,请留言
|