对于游戏的玩法,我们可以简单分解为三个步骤
1)将前63个盘子从X移动到Y上;
2)将最底下的第64个盘子从X移动到Z上;
3)将Y的63个盘子移动到Z上;
第二步是最容易实现的一步,那么第一步和第三步如何实现?
问题一(“将X上的63个盘子借助Z移到Y上")拆解为:
—将前62个盘子从X移动到Z上;
—将最底下的第63个盘子移动到Y上;
—将Z上的62个盘子移动到Y上;
问题二(“将Y上的63个借助X移到Z上")拆解为:
—将前62个盘子从Y移动到X上;
—将最底下的第63个盘子移动到Z上;
—将X上的62个盘子移动到Y上;
那么我们如何用代码实现呢?
#includeint main() { int h; printf("ninput number:n"); scanf("%d",&h); printf("tower disks %dn",h); hanoi(h, 'A', 'B', 'C'); } void hanoi(int n, int x, int y, int z) { if(n==1) printf("%c-->%cn", x, z); else { hanoi(n-1, x, z , y); printf("%c-->%cn", x, z); hanoi(n-1,y,x,z); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)