博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汉诺塔问题hdu 2065——找规律
阅读量:6996 次
发布时间:2019-06-27

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

这类题目就是纸上模拟,找规律

问题描述:在一块铜板上有三根杆,目的是将最左边杆上的盘全部移到右边的杆上,条件是不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到下盘的上面

问:现在有N个圆盘,她至少多少次移动才能把这些圆盘从最左边移到最右边? 

纸上模拟:模拟之后发现将圆盘从左移动到中间的次数=从中间移到右边=1/2从左边移到右边次数

f(n)表示至少n次移动才能把这些圆盘从最左边移到中间    a(n)表示第n个圆盘移动的次数

当n=1时,f(1)=1    a(1)=1

当n=2时,f(2)=4     a(1)=3   a(2)=1

当n=3时,f(3)=13    a(1)=9   a(2)=3   a(3)=1

规律:a(n)呈现以3为公比的等比数列,f(n)为等比数列的和

所以:从左边移到中间需:s(n)=(3^n-1)/2;

从左边移到右边需:s(n)=(3^n-1);

代码:

#include
using namespace std;int main(){ int n; while(cin>>n) { long long sum=1; for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/Aiahtwo/p/10460535.html

你可能感兴趣的文章
Dubbo 是一个分布式服务框架
查看>>
js数组排序实用方法集锦
查看>>
calculate the time of methods
查看>>
python与正则表达式
查看>>
删除多个附件
查看>>
目标检测之显著区域检测---国外的一个图像显著区域检测代码及其效果图 saliency region detection...
查看>>
Laravel之路——事务
查看>>
WCF分布式开发步步为赢(10):请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)....
查看>>
python的struct模块
查看>>
python进程和线程中的两个锁
查看>>
Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库
查看>>
(最小生成树 次小生成树)The Unique MST -- POJ -- 1679
查看>>
括号匹配(二) -- 经典动态规划
查看>>
在jsp中的css
查看>>
Java代理(三)
查看>>
intent.setFlags方法中的参数值含义
查看>>
Android GridView属性集合2
查看>>
加载静态文件,父模板的继承和扩展
查看>>
新的一个月,就这么不知不觉的来临了
查看>>
centos7.4之zabbix4.0的fping监控
查看>>