汉诺塔

来源:互联网 发布:淘宝限制发布商品怎么办 编辑:程序博客网 时间:2024/05/29 14:03

Hanoi塔问题,这是一个古典的数学问题,是一个只有用递归方法解决的问题。问题是这样的:古代有一个梵塔,塔内有3个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在上,小盘在下。在移动过程中可以利用B座

#include <stdio.h>void move(char x, char y){static int i = 0;printf("%3d: %c --> %c\n",++i, x, y);}void hanoi(int n, char a, char b, char c){if(1 == n){move(a, c);}else {hanoi(n-1, a, c, b);move(a, c);hanoi(n-1, b, a, c);}}int main(int argc, char *argv[]){int n = 0;printf("How much stone:");scanf("%d", &n);hanoi(n, 'A', 'B', 'C');return 0;}