刚刚学完递归,就做这一道题,做的头疼。。
某编程大神给了一个图。。
我真敬佩这位前辈,他是怎么想到把前63个看为一个整体的。。
在前辈的指点下,终于写出来了。。。
[C++] 纯文本查看 复制代码 #include <stdio.h>
class plate
{
public:
void move(int count,plate start,plate end,plate middle_use)
{
if(count != 1)
{
move(count-1,start,middle_use,end);
move(1,start,end,middle_use);//第四个参数可以乱传
move(count-1,middle_use,end,start);
}
if(count == 1)
{
printf("%c-%c\n",start.position,end.position);
}
}
void givePosition(char character)
{
this->position = character;
}
private:
char position;
};
//void move(int count,plate start,plate end,plate middle_use)
//{
// if(count != 1)
// {
// move(count-1,start,middle_use,end);
// move(1,start,end,middle_use);//第四个参数可以乱传
// move(count-1,middle_use,end,start);
// }
// if(count == 1)
// {
// printf("%c-%c\n",start.position,end.position);
// }
//}
int main()
{
int count;
scanf("%d",&count);
plate a;
plate start,end,middle_use;
start.givePosition('A');
end.givePosition('C');
middle_use.givePosition('B');
a.move(count,start,end,middle_use);
return 0;
}
不得不说没有这个图的提醒我真写不出来。。
我好菜啊 |