本文共 552 字,大约阅读时间需要 1 分钟。
突破口:
既然是汉诺塔,那就非常有可能与原来的汉诺塔问题有联系,手动推出n=1,2,3,4的移动次数分别为2,4,10,28,而原汉诺塔问题n=1,2,3时分别为2,8,26,有什么发现呢? 假设原汉诺塔的数列为x1[20],现汉诺塔的数列为x2[20],那么x2[i]=x1[i-1]+2。代码如下:
#include#include #include #include #include #define pi 3.1415926using namespace std;typedef long long ll;ll x1[21],x2[21];int main(){ x1[1]=2; for(int i=2;i<=20;i++) x1[i]=3*x1[i-1]+2; x2[1]=2; for(int i=2;i<=20;i++) x2[i]=x1[i-1]+2;/* for(int i=2;i<=20;i++) printf("%lld\n",x1[i]);*/ int T,n; cin>>T; while(T--) { cin>>n; cout< <
转载地址:http://tddci.baihongyu.com/