1、汉诺塔问题:有一座宝塔(塔A),其上有64个金碟,所有碟子按从大到小由塔底堆放至塔顶。紧挨着这座宝塔有另外的两座宝塔(塔B和塔C),要求塔A上的碟子移动到塔C上去,其间可以借助于塔B。每次只能移动一个碟子,任何时候都不能把一个碟子放在比它小的碟子上面。请写出完整c语言代码
时间: 2023-03-14 10:00:06 浏览: 109
#include<stdio.h>
void move(int n,char from,char to,char helper)
{
if(n==1){
printf("Move disk %d from %c to %c\n",n,from,to);
return;
}
move(n-1,from,helper,to);
printf("Move disk %d from %c to %c\n",n,from,to);
move(n-1,helper,to,from);
}
int main()
{
int n=64;
move(n,'A','C','B');
return 0;
}
相关问题
1、汉诺塔问题:有一座宝塔(塔A),其上有64个金碟,所有碟子按从小到大由塔底堆放至塔顶。紧挨着这座宝塔有另外的两座宝塔(塔B和塔C),要求塔A上的碟子移动到塔C上去,其间可以借助于塔B。每次只能移动一个碟子,任何时候都不能把一个碟子放在比它小的碟子上面。
答:汉诺塔问题的解法是:先将塔A上的碟子分为两部分,一部分有一个碟子,另一部分是剩下的碟子,将剩下的碟子移动到塔B上,然后将最小的碟子移动到塔C上,然后将塔B上的碟子移动到塔C上,最后将塔A上的碟子移动到塔C上。
阅读全文