uva 10254(四柱汉诺塔)
来源:互联网 发布:博拉网络上市最新消息 编辑:程序博客网 时间:2024/05/01 01:51
题意:给出四柱汉诺塔上初始柱子上圆盘的数量n,问最优多少次移动可以移动到另一个柱子上。
题解:可以参考四柱汉诺塔之初步探究和四柱汉诺塔实现这两篇论文,理解四柱汉诺塔的原理。
但是这道题n是从1到10000,递归太多层,而且需要用到大数,所以要找规律,f[i] = f[i - 1] + 2^k,k从1开始每k+1次计算f[i]后增大1,初始f[1] = 1。
import java.math.BigInteger;import java.util.*;public class Main { public static void main(String[] arge) { BigInteger[] f = new BigInteger[10005]; BigInteger One = BigInteger.ONE; BigInteger Zero = BigInteger.ZERO; f[0] = Zero; f[1] = One; int i = 2, k = 1; while (i <= 10000) { BigInteger Add = BigInteger.valueOf(1).shiftLeft(k); //1 << k for (int j = 0; j < k + 1 && i <= 10000; j++, i++) f[i] = f[i - 1].add(Add); k++; } Scanner cin = new Scanner(System.in); while (cin.hasNext()) { int n = cin.nextInt(); System.out.println(f[n]); } }
0 0
- uva 10254(四柱汉诺塔)
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 微博信息发布方法、服务器及存储介质
- 多线程间的通讯之等待唤醒机制
- Isomorphic Strings
- C++之多态性与虚函数
- PLSQL连接远程ORACLE数据库中文乱码解决
- uva 10254(四柱汉诺塔)
- bank第二版
- Android HAL层hardware module的设计
- iOS 带参数函数体和不带参数函数体的实现与xcode单步调试
- 使用hydra暴力破解web登录界面
- android studio安装
- 精度: 3%+3个字 什么意思
- 黑马程序员——第六天(包)
- input清除默认样式及兼容问题的解决方法