解法这里就不多说了,CSDN里大佬讲的肯定比我好
这是一道经典的递归题目,自然也非常简单,但是有一个坑却很容易掉下去
误解:
#includeusing namespace std; void hanoi(int num,char a,char b,char c){ //起始,终点,过渡 if(num==1){ cout<1->"<"< "<>n; cin>>a>>b>>c; hanoi(n,a,b,c); }
正解:
#includeusing namespace std; void hanoi(int num,char a,char b,char c){ //起始,终点,过渡 if(num==1){ printf("%c->%d->%cn",a,num,b); return; } hanoi(num-1,a,c,b); printf("%c->%d->%cn",a,num,b); hanoi(num-1,c,b,a); } int main(){ int n=0; char a,b,c; cin>>n; cin>>a>>b>>c; hanoi(n,a,b,c); }
观察到有什么区别了吗?
没错,格式化输出(printf)比流输出(cout)要快!!!
这就是超时的主要原因了!



