点击这里更换您喜欢的皮肤wtboj 首页
请点击这里登入noios   首页 入门 c++讲义 入门教程视频 金牌教程 入门视频 站务 公告 | 题库 记录 竞测 测试 闯关 作业 排名 团队 讨论 | 换肤 | 登入 注册  
News >>   新增功能:各团队管理员可以发布本团队作业了 ()

From sina007
新年趣事之玩具
背景 Background
    新年到了,xiaomengxian先给大家拜年了~祝大家狗年旺旺~^_^
描述 Description
    今年春节,xiaomengxian回到了邵阳过年。刚准备进门时,突然发现院子里有个小孩在摆弄什么东西。走进一看,原来他在玩一种智力玩具,叫做“汉诺塔”。“汉诺塔”是这样一种玩具:有三个柱子,分别编号:#1,#2,#3。初始时,有N个直径不同的盘子放在第一根柱子上,且越底下的盘子直径越大。游戏的目的是把所有的盘子转移到第二根柱子上。约束条件是:任何时候都只能把小盘子放在大盘子上。
  由于盘子数目比较多,小孩玩了很久都没有完成任务。于是,xiaomengxian走上前去,打开随身携带的笔记本电脑,运行了一个很久以前编写的程序。它的主要过程大致是这样的:
  procedure hanoi(n:integer;from,to_,temp:integer);
  begin
    if n>0 then
    begin
     hanoi(n-1,from,temp,to_);
     writeln(n,from,to_);
     hanoi(n-1,temp,to_,from)
    end
  end;
  有了xiaomengxian的帮助,小孩很快就完成了任务。他在感谢xiaomengxian的同时,又问了一个问题,想考考xiaomengxian。这个问题就是,给出一个中间状态,能否很快的说出这是第几次移动后的状态?
为了描述方便,对于每一个中间状态,我们定义序列D。其中,Di表示第i小的盘子所在的柱子编号。显然,Di=1,2,3。
  下面是N=3的例子:
  ::点击图片在新窗口中打开::
输入格式 Input Format
    第一行为一个整数N(1<=N<=31)
  第二行为N个整数,用空格分开,表示序列D。
输出格式 Output Format
    一个整数,表示该状态是第几次移动后的结果。如果该状态不是由上述代码产生的中间状态,则输出“-1”。
样例输入 Sample Input
 
样例输出 Sample Output
 
时间限制 Time Limitation
  各个测试点1s
来源 Source
  Xiaomengxian
Flag
  
题号
  P1358
  其它
通过
  0人
提交
  1次
通过率
  0%
难度
  3
提交 讨论 题解
 Copyright wtboj © 2005-2006. www.wutuobang.date Powered by wtboj 关于 联系 帮助
 wtboj Information ---- Total Users : 1242 | Online Users / Processes : 0 / 81 | Processed Time : 78 ms | Server Time : 2025/4/27 9:00:10