包含多组数据,首先输入T,表示有T组数据.每个数据一行,是盘子的数目N(1<=N<=60)和盘
号k(1<=k<=N)。
号k(1<=k<=N)。
Output
对于每组数据,输出一个数,到达目标时k号盘需要的最少移动数。
#include <stdio.h>
///推理 规律题
int main()
{
__int64 bit[61] = {1};
int i;
for(i = 1; i < 61; ++i)
bit[i] = bit[i-1] << 1;
int n,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&i);
printf("%I64d\n",bit[n-i]);
}
return 0;
}
本文详细探讨了经典的汉诺塔问题,包括其基本规则、递归解法及优化策略。通过实例分析,解释了如何从起点移动所有盘子到达目标位置,帮助读者深入理解递归思想在解决问题中的应用。
973

被折叠的 条评论
为什么被折叠?



