汉诺塔V

⒈朵小奇葩°彦~ 2015-11-26 04:59:50
#include<stdio.h>
int main()
{
int k,n;
int i;
long long int t;
int a,b;
scanf("%d",&n);
while(n--)
{
t=1;
scanf("%d%d",&a,&b);
k=a-b;
for(i=1;i<=k;i++)
{
t*=2;
}
printf("%lld\n",t);
}
return 0;
}

用1,2,...,n表示n个盘子,称为1号盘,2号盘,...。号数大盘子就大。经典的汉诺塔问 题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于 印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小 顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱 子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘。我们 知道最少需要移动2^64-1次.在移动过程中发现,有的圆盘移动次数多,有的少 。 告之盘 子总数和盘号,计算该盘子的移动次数.
大神帮忙看看哪错了吧
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-11-27
  • 打赏
  • 举报
回复
用 unsigned long long
fly_dragon_fly 2015-11-27
  • 打赏
  • 举报
回复
64个盘子,1号盘不是溢出了吗

69,375

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧