博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汉诺塔系列2-sdut
阅读量:5972 次
发布时间:2019-06-19

本文共 974 字,大约阅读时间需要 3 分钟。

汉诺塔系列2

Time Limit: 1000MS Memory Limit: 65536KB
 

Problem Description

用1,2,...,n表示n个盘子,称为1号盘,2号盘,...。号数大盘子就大。经典的汉诺塔问

题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于
印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小
顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱
子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘。我们
知道最少需要移动2^64-1次.在移动过程中发现,有的圆盘移动次数多,有的少 。 告之盘
子总数和盘号,计算该盘子的移动次数.

 

Input

包含多组数据,每组首先输入T,表示有T行数据。每行有两个整数,分别表示盘子的数目N(1<=N<=60)和盘号k(1<=k<=N)。

Output

对于每组数据,输出一个数,表示到达目标时k号盘需要的最少移动数。

Example Input

260 13 1

Example Output

5764607523034234884

Hint

 

Author

 实验代码

#include 
void f(int c, int k,long long sum){ int i; if(c>=k) { sum++; } for(i=1; i<=c-k; i++) { sum*=2; } printf("%lld\n",sum);}int main(){ int b; while(scanf("%d",&b)!=EOF) { while(b--) { long long sum=0; int c, k; scanf("%d%d",&c,&k); f(c,k,sum); } } return 0;}

转载于:https://www.cnblogs.com/lxhax/p/6629019.html

你可能感兴趣的文章
MySQL备份之分库分表备份脚本
查看>>
Java 与 Netty 实现高性能高并发
查看>>
SurfControl人工智能新突破 领跑反垃圾邮件
查看>>
一个动态ACL的案例
查看>>
linux基础中的基础
查看>>
jquery 表单验证
查看>>
openstack 之 windows server 2008镜像制作
查看>>
VI快捷键攻略
查看>>
Win server 2012 R2 文件服务器--(三)配额限制
查看>>
卓越质量管理成就创新高地 中关村软件园再出发
查看>>
linux rsync 远程同步
查看>>
httpd的manual列目录漏洞
查看>>
myeclipse2014破解过程
查看>>
漫谈几种反编译对抗技术
查看>>
VS 编译错误
查看>>
Timer 和 TimerTask 例子
查看>>
Spring BOOT 集成 RabbitMq 实战操作(一)
查看>>
安装python3.5注意事项及相关命令
查看>>
进程通信之无名信号量
查看>>
并发串行调用接口
查看>>