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) ...
随机推荐
- 【APT】响尾蛇(SideWinder)Hta文件自动解密C2
前言 一个用于从SideWinder APT组织常用的hat文件中解密C2链接地址的Python脚本,示例代码对一些老的hat文件效果比较好,新的样本可能需要根据实际情况修改下,最初是用于对VT上命中 ...
- 二叉树系列之Treap树
Treap是一棵拥有键值.优先级两种权值的树 struct node{ int size;//以这个结点为根的子树的结点总数量,用于名次树 int rank;//优先级 int key ...
- Treewidget节点的增加
父节点的创建 // 隐藏QTreewidget标题头 ui->treeWidget->header()->hide(); // 实现Treewidget父节点的挂载 // 创建存放Q ...
- 黑马 java.lang.IllegalArgumentException: Property ‘dataSource‘ is required
现象: 按照教程步骤做的,但连单元测试都无法通过,会出现java.lang.IllegalArgumentException: Property 'dataSource' is required这个错 ...
- Typora 基本功能
Typora 基本功能 typora 下载官网:https://www.typora.io/ "安装到C盘" 基本使用 1.该文件后缀 .md2.六级标题 :ctrl+ ...
- linux 修改password
passwd 命令,手动修改: [root@localhost testuser]# passwd testuser Changing password for user testuser. New ...
- MySql 字符串时间转换
MySql中经常遇到字符串格式时间转换成时间类型的情况: SELECT STR_TO_DATE('Jul 20 2013 7:49:14:610AM','%b %d %Y %h:%i:%s:%f%p' ...
- 关于Centos7Th 初始化的一些概述
- 概述 Q:为什么要初始化,什么是初始化? A:一般初始化是根据的后期要部署的业务环境来定制的,新装的系统其自带的软件不够支撑各种开发环境或者运维工作:需要部署和设置对应的安全环境.开发/运维软件. ...
- @click使用三元运算符
@click="scope.row.status == 1 ? '' : blockUp(scope.row) "
- Matlab:读取、写入(.txt)(.xlsx)
写入txt a=[1,2,3;4,5,6]; save C:\Users\Administrator\Desktop\a.txt -ascii a 参考:https://blog.csdn.net/h ...