C语言:
#include <iostream>
using namespace std;
void move(char a, char b){
cout<<a<<"----->"<<b<<endl;
void hannuo(int n, char a, char b, char c , char d){
if(1==n){
move(a, d);
else if(2 == n){
move(a, b);
move(a, d);
move(b, d);
else{
hannuo(n-2, a, c, d, b);
move(a,c);
move(a,d);
move(c,d);
hannuo(n-2, b, c, a, d);
int main(){
char a='a', b='b', c='c', d = 'd';
int i;
cout<<"请输入盘子的个数";
while (cin>>i){
hannuo(i, a, b, c, d);
return 0;
扩展资料:
解题思路:
如a,b,c,d四柱,要把a柱第n个盘移到目标柱子(d柱),先把上层分两为两部份,上半部分移到b柱,下半部分移到c柱,再把第n盘移到目标柱子,然后,c柱盘子再移到目标柱子,再把b柱盘子移到目标柱子。
细节地方:上半部分移到b柱时,它的中间变量柱子是有二选一的。而下半部分移到c柱时,它的中间变量柱子只有一个(因为一个柱子已被上半部份占了),b,c也移到目标柱子时同理。
我只知道这些了