ACM-NEFUOJ-汉诺塔问题
P200汉诺塔
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i;
long long s[40];
s[1]=2;
for(i=2;i<=35;i++)
s[i]=3*s[i-1]+2;
while(cin>>n)
cout<<s[n]<<endl;
return 0;
}
P201又见汉诺塔
引用一波qky大佬的思路
在题目要求条件下,将n个盘子从左边移动到最右边的最快方法是:
(1)先将n-1个盘子移动到中间
(2)让最大的盘子直接移动到最右边(2步)
(3)最后再让n-1个盘子移动到最右边
(1)和(3)最需步数应该是一样的,且因为只有最大的盘子才能放在其他盘子上面,所以计算(1)(3)的步骤数时不需考虑这一特殊要求;
我用near数组来储存(1)(3)所需的步骤,计算需要递归;n个盘子从左边移动到中间步骤如下:
(1)先让n-1个盘子移动到最右端
(2)让最大的盘子移动到中间
(3)让n-1个盘子从右端移动到中间
(1)的话和200题一样的;(3)的话就是递归;
#include <bits/stdc++.h>
using namespace std;
long long han[21];
long long near[21];
void prepare(){
han[1]=2;
for(int i=2;i<=20;i++)
han[i]=3*han[i-1]+2;
near[1]=1;
for(int i=2;i<=20;i++)
near[i]=han[i-1]+near[i-1]+1;
}
long long fun(int n){
if(n==1)
return 2;
else
return 2*near[n-1]+2;
}
int main(){
prepare();
int T;
cin>>T;
while(T--){
int n;
cin>>n;
cout<<fun(n)<<endl;
}
return 0;
}
ACM-NEFUOJ-汉诺塔问题的更多相关文章
- 1207 ACM 汉诺塔II 数学
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1207 中文题目,在原来三个柱子的情况下(汉诺塔一),增加了一个柱子,难度也增加了. 思路: 思考时尽量和汉 ...
- [acm]HDOJ 2064 汉诺塔III
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2064 汉诺塔变种,只能从中间专业,递归关系为:f(n)=3*f(n-1)+2. //汉诺塔变种,只能 ...
- ACM 汉诺塔(三)
汉诺塔(三) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度 ...
- Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)C粉丝与汉诺塔
题目描述 苟利国家生死以,岂因福祸避趋之?作为ACM真正的粉丝,应该都听闻过汉诺塔问题,汉诺塔问题是这样的: 有三根柱子,编号A,B,C柱,初始情况下A柱上有n个盘子,小盘子在上大盘子在下,n个盘子大 ...
- nyoj89 汉诺塔(二)
题目网址 :http://acm.nyist.net/JudgeOnline/problem.php?pid=89 汉诺塔问题的经典结论: 把i个盘子从一个柱子整体移到另一个柱子最少需要步数是 2的i ...
- UVA 10254 - The Priest Mathematician (dp | 汉诺塔 | 找规律 | 大数)
本文出自 http://blog.csdn.net/shuangde800 题目点击打开链接 题意: 汉诺塔游戏请看 百度百科 正常的汉诺塔游戏是只有3个柱子,并且如果有n个圆盘,至少需要2^n- ...
- HDU 2077 汉诺塔IV (递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2077 还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是 ...
- HDU 2064 汉诺塔III (递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2064 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到 ...
- 汉诺塔IV---hdu2077
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2077 #include <stdio.h> #include <stdlib.h&g ...
- HDU 1207 汉诺塔II (找规律,递推)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1207 汉诺塔II Time Limit: 2000/1000 MS (Java/Others) ...
随机推荐
- Java中String,JSON对象,java实体类(Bean)之间的相互转换
FastJson对于json格式字符串的解析主要用到了一下三个类: (1)JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. (2)JSONObje ...
- oracle 锁用户和解锁。
1 批量锁用户--数据库迁移后不允许在连接了 SELECT 'alter user '||username||' account lock;' from dba_users WHERE usernam ...
- AX2012 循环读取DataSource的记录
static void LoopFormDataSource(Args _args) { FormDataSource formDataSource; SalesLine salesLineSel, ...
- MySQL innodb存储引擎的数据存储结构
InnoDB存储引擎的数据存储结构 B+ 树 为什么选择B+树? 因为B+树的叶子节点存储了所有的data,所以它的非叶子节点可以存储更多的key,使得树更矮:树的高度几乎就是I/O的次数,所以选择更 ...
- 6-8次PTA题目集总结
一,前言 1,第六次作业(针对电信计费) 本次作业主要是对类的操作,题目已经给出类图,类图里面已经给了各种方法以及属性.此次作业涉及了座机的计费方式,市内省内省外怎么计费.难度偏难,主要是各类之间怎么 ...
- 当MYSQL报错时
输入mysqld --console查看错误 针对error行进行排查
- JAVA - 判断两个浮点数相等
JAVA - 判断两个浮点数相等 背景知识 float型和double型是JAVA的基本类型,用于浮点数表示,在JAVA中float型占4个字节32位,double型占8个字节64位,一般比较适合用于 ...
- Unity 转小游戏
填写appid 和游戏资源位置 在导出的项目里可以修改游戏资源位置 两个目录 minigame 是小程序打开的目录 webgl 是要下载的的资源 下载一个http 服务器就有了 和JS交互 大部分js ...
- SQL语句底层执行顺序
1. SELECT 语句的完整结构 SQL92语法: SELECT ...,....,(存在聚合函数) FROM ...,...,... WHERE 多表的连接条件 AND 不包含聚合函数的过滤条件 ...
- HTML Cookie
目录 Cookie是什么 Cookie的属性 Cookie的作用域 Domain 属性 Path 属性 SameSite 属性 Cookie密码验证小案例 效果展示 代码 Cookie是什么 HTTP ...