UVA_254

一开始看错题目了,没有按照题目的要求去做,按题目中描述的算法去做的话,在n为偶数时和我们平常移动的结果是一样的,而当n为奇数的时候,最后会把所有的盘子移到中间的柱子上,实际上就是相当于调换的中间和最后柱子而已。

在找状态的时候可以用递归来处理,我们首先指定盘子堆的初始柱子s,和该堆最下面盘子所期望移动到的柱子t,从最大的盘子找起,分情况讨论最大的盘子能否移动,然后改变相应的状态继续递归即可。

import java.math.BigInteger;import java.util.Scanner;

public class Main {public static int[] a = new int[5];public static BigInteger[] d = new BigInteger[110];public static void main(String[] args) {        Scanner cin = new Scanner(System.in);int n;        BigInteger m;        d[0] = new BigInteger("1");for(int i = 1; i <= 100; i ++)            d[i] = d[i - 1].multiply(BigInteger.valueOf(2));while(cin.hasNext())        {            n = cin.nextInt();            m = cin.nextBigInteger();if(n == 0)break;for(int i = 0; i < 3; i ++)                a[i] = 0;            dfs(0, 2, n, m);if(n % 2 == 0)                System.out.println(a[0] + " " + a[1] + " " + a[2]);else                System.out.println(a[0] + " " + a[2] + " " + a[1]);        }    }public static void dfs(int s, int t, int n, BigInteger m)    {if(n == 1)        {if(m.equals(BigInteger.ZERO))                a[s] ++;else                a[t] ++;return ;        }int k = 0;        {int[] x = new int[3];            x[s] = 1;            x[t] = 1;for(int i = 0; i < 3; i ++)if(x[i] == 0)                    k = i;        }if(m.compareTo(d[n - 1]) != -1)        {            ++ a[t];            m = m.add(d[n - 1].negate());            dfs(k, t, n - 1, m);        }else        {            ++ a[s];            dfs(s, k, n - 1, m);        }    }}

转载于:https://www.cnblogs.com/staginner/archive/2011/12/19/2293900.html

UVA 254 Towers of Hanoi相关推荐

  1. Strange Towers of Hanoi (POJ1958)

    Strange Towers of Hanoi (POJ1958) n个盘子4座塔的Hanoi问题至少需要多少步?(1<=n<=12) 分析: n盘3塔: \(d[n] = 2*d[n-1 ...

  2. poj 1958 Strange Towers of Hanoi

    2019独角兽企业重金招聘Python工程师标准>>> Strange Towers of Hanoi Time Limit: 1000MS Memory Limit: 30000K ...

  3. POJ1958 Strange Towers of Hanoi [递推]

    题目传送门 Strange Towers of Hanoi Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3117   Ac ...

  4. UVA254 Towers of Hanoi【DFS】

    In 1883, Edouard Lucas invented, or perhaps reinvented, one of the most popular puzzles of all times ...

  5. Strange Towers of Hanoi 汉诺塔问题及其升级(递推)四个汉诺塔问题

    今天学习递推的汉诺塔问题,非常的有趣 文章目录 1.汉诺塔问题来源 分析 2.Strange Towers of Hanoi[DP][递推] 题目大意: 思考 解题步骤: 1.汉诺塔问题来源 汉诺塔( ...

  6. WeChall Towers of Hanoi (Java, Crac... 答案

    还没开始学Java,先贴下别人的答案,省得以后找不到. Towers of Hanoi - 我怎么能不努力奋斗 - 博客园

  7. 汉诺塔问题(Towers of Hanoi)

    汉诺塔问题的思维方式很重要,正向和逆向都很容易绕晕,要从中间开始展开 显而易见,如图所示的情况是移动过程中必须的一步,而问题就可以分解为前半部分:如何将k-1个盘子从A->B及后半部分:如何将k ...

  8. java hanoi_JAVA:New towers of Hanoi

    全部程序实现: package ch2.divide; public class NewHanoi { public static int count = 0; // /这个地方的用途就是找到A杆顶端 ...

  9. HT for Web 3D游戏设计设计--汉诺塔(Towers of Hanoi)

    在这里我们将构造一个基于HT for Web的HTML5+JavaScript来实现汉诺塔游戏. 汉诺塔的游戏规则及递归算法分析请参考http://en.wikipedia.org/wiki/Towe ...

  10. POJ - 1958 Strange Towers of Hanoi(线性dp)

    题目链接:点击查看 题目大意:继承经典的n个盘子三座塔的汉诺塔问题,现在问对于n个盘子四座塔的升级版汉诺塔问题,对于n=1~12的答案分别是多少 题目分析:首先分析三座塔的情况,对于第n个盘子而言,我 ...

最新文章

  1. vs2005 Key not valid for use in specified state
  2. 连接黑屏_连接百度Carlife后,MMI黑屏了?
  3. 为什么谐振时电抗为0_变频串联谐振试验装置的接线原理
  4. LBS推荐系统的设计方法
  5. Mysql京东的一道面试题目 比较综合
  6. 【拔刀吧少年】之Expect 自动化控制和测试 Here Document 免交互
  7. 把1,2,3…n*n 的数字按照顺时针螺旋的形式填入数字矩阵
  8. [NLP]OpenNLP Maven工程的依赖
  9. EUV光刻!宇宙最强DDR4内存造出
  10. 学好mysql数据库能找到什么工作_MySQL数据库学习路线汇总整理全集(附详细的学习路线介绍图)...
  11. 项目管理的五大过程组及十大知识领域
  12. Fisher精确检验的通俗理解
  13. [Machine Learning]--PMI(Pointwise Mutual Information)
  14. linux下通过关键字查询日志并定位
  15. 【粉丝福利】第二波 | 当当购书狂欢,满 400 减 230!下单充电速来!
  16. 算法设计与分析第一次作业 1301. Bubbling Bubbles
  17. 为什么美团股价大跌:疫情影响、阿里竞争与模式弊病
  18. [Design]国粹京剧 脸谱表情 值得收藏
  19. 为什么使用计算机网络连接,为什么无线网络连接上却不能上网,教您电脑连上无线网却不能上网怎么办...
  20. Brpc 服务端收包源码分析(一)

热门文章

  1. 用了几年的 Fastjson,我最终替换成了Jackson!
  2. 一直都说字节跳动有点难,这次体会了,而且被怼了~
  3. 微服务架构是啥?一个故事告诉你!
  4. Azure 宕机 3 个小时:因人为配置 DNS 失误
  5. 阿里巴巴:如何从优秀员工,晋升为合格管理者?
  6. 【名额有限】腾讯技术工程-运维技术沙龙
  7. mysql 打印_揭秘MySQL 主从环境中大事务的传奇事迹
  8. 分布式消息系列:详解RocketMQ的简介与演进、架构设计、关键特性与应用场景
  9. 【WEB基础】HTML CSS 基础入门(2)选取工具:VS2019安装使用
  10. python中的exec()、eval()以及complie()