【正经题解】Hanoi 双塔问题
2024-02-20 17:22:58
发布于:浙江
20阅读
0回复
0点赞
找到规律,用高精度就行了。
我们可以先用深搜打表,设法找到ai与ai+1的关系。
深搜代码略……
n 1 2 3 4 5 ……
a 2 6 14 30 62 ……
其实,a[i]=a[i-1]+2^i;(这是列举众多规律众多一个,dalao勿喷)
a[0]=0;
#include<cstdio>
using namespace std;
int l,n;
int a[201],b[201];//a是最终结果,b是2的i次方
void gjc()//高精乘,算2的i次方
{
int t=0;
for (int j=200;j>0;j--)
{
l=b[j]*2+t;
b[j]=l%10;
t=l/10;
}
}
void gjj()//高精加,把数组B的值加到A里面
{
int t=0;
for (int j=200;j>0;j--)
{
l=a[j]+b[j]+t;
a[j]=l%10;
t=l/10;
}
}
int main()
{
scanf("%d",&n);//读入
b[200]=1;//初值,不能漏掉
for (int i=1;i<=n;i++)
{gjc();gjj();}//运算
int k=1;
while (a[k]==0&&k<200)//去除前导0
k++;
for (int i=k;i<=200;i++)
printf("%d",a[i]);//输出
}
这里空空如也
有帮助,赞一个