大吉大利,今晚吃鸡 ——麻烦大佬这递归为啥是错的,求指点

#include <bits/stdc++.h>
using namespace std;
long long ans;
void hanio(int n,char a,char b,char c)//把n个盘子借助b柱子从a移动到c 
{
	if(n==0) return;
	hanio(n-1,a,c,b);
	hanio(n-1,b,a,c);
//	move(a,b);
	ans++;
	hanio(n-1,c,a,b);
	hanio(n-1,b,c,a);
	//move(b,c)
	ans++;
	hanio(n-1,a,c,b);
	hanio(n-1,b,a,c);
	
} 
int main()
{
   	int n;
   	while(cin>>n)
   	{
   	ans=0;
   	hanio(n,'a','b','c');
   	cout<<ans<<endl;	
	}
	return 0; 
}

全部评论
现在回复的有点晚,不知道对你有没有用。 我直接用n=2带进去发现,结果为15,然后我手动移只有8。 于是我分析了一下,你一个hanio就直接算出了从a移到c或者从c移到a了,不需要再经过b。 所以六个hanio删掉一半就行。
点赞 回复 分享
发布于 2021-09-11 12:56

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务