Today,让我来带大家学习怎样用C++解决河内塔问题
首先,我们来了解一下什么是河内塔,其实也叫汉诺塔。在桌子上有三根柱子,在第一根柱子上从下往上按大小顺序摆放着圆盘,然后把这些圆盘从下往上按大小顺序重新摆放在另外一根柱子上。并且规定,大盘子不能在小盘子上,每次只能移动一个圆盘。网上也有许多关于河内塔的代码,下面我先把代码放上来:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include<string>
#include<iostream>
using namespace std;
void move(int n,char N,char m);
void fun(int n,char A,char B,char C);
void fun(int n,char A,char B,char C){
if(n==1){
move(1,A,C);
}else{
fun(n-1,A,C,B);
move(n,A,C);
fun(n-1,B,A,C);
}
}
void move(int n,char N,char M){
printf("把%d从%c移动到%c\n",n,N,M);
}
void main( )
{
int n;
char A='A';
char B='B';
char C='C';
printf("请输入要移动的盘子数:\n");
scanf("%d",&n);
fun(n,A,B,C);
}
其实想要解决河内塔问题是很简单的,接下来我来给大家讲解一下如