#include <stdio.h>
#include <stdlib.h>
int main()
{
int t,n,i;
long long s[21],ans;
s[1]=2;
for(i=2;i<=20;i++){
s[i]=3*s[i-1]+2;
}
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(n==1){
printf("2\n");
continue;
}
ans=s[n-1]+2;
printf("%lld\n",ans);
}
return 0;
}这道题只允许最大的盘子放在其他盘子上面,其他的盘子还像汉诺塔三中那样移动,所以就是s[n-1]次+2次
本文介绍了一个汉诺塔变种问题的C语言实现,该问题限制最大盘子只能放在其他盘子上,通过递推公式计算移动次数。程序使用数组存储预计算结果并读取测试数据。
3722

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



