前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >汉诺塔(三)

汉诺塔(三)

作者头像
书童小二
发布于 2018-09-03 10:14:20
发布于 2018-09-03 10:14:20
62100
代码可运行
举报
文章被收录于专栏:前端儿前端儿
运行总次数:0
代码可运行

汉诺塔(三)

描述

在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

现在我们把三根针编号为1,2,3。

所有的金片在初始时都在1号针上,现在给你的任务是判断一系列的指令过程中,是否会出现非法的指令。

而非法指令有以下两种情况:

1、某个针上已经没有金片了,但是指令依然要求从该处移动金片到其它针上。

2、把一个大的金片移动到了小的金片上。

输入第一行输入一个整数N表示测试数据的组数(N<10) 每组测试数据的第一行有两个整数P,Q(1<P<64,1<Q<100),分别表示汉诺塔的层数与随后指令的条数 随后的Q行,每行都输入两个整数a,b,(1<=a,b<=3)表示一条指令。 指令1 2表示把1号针最上面的金片移动到2号针最上面。 数据保证a,b不会相同。输出如果存在非法指令,请输出illegal 不存在非法指令则输出legal样例输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
3
2 1
1 2
3 3
1 2
1 3
3 2
2 1
2 1

样例输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
legal
illegal
illegal
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 
#include <iostream>
#include <stack>

using namespace std;


int main()
{
    int n;
    int ceng,oper;
    int t1,t2;
    bool flag;
    cin>>n;
    while(n--)
    {
        stack<int>s[4];
if(!s[1].empty())
    s[1].pop();
if(!s[2].empty())
    s[2].pop();
if(!s[3].empty())
    s[3].pop();
flag=true;
cin>>ceng>>oper;
for(int i=ceng;i>=1;i--)
    s[1].push(i);
  for(int i=0;i<oper;i++)
  {
      cin>>t1>>t2;
      if(s[t1].empty())
      {
          flag=false;
          break;
      }
      else if(!s[t2].empty() && s[t1].top()>s[t2].top())
      {
          flag=false;
          break;
      }
      s[t2].push(s[t1].top());
      s[t1].pop();
  }
  if(flag==true)
      cout<<"legal"<<endl;
  else
      cout<<"illegal"<<endl;
    }
    return 0;
}        
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
NYOJ------汉诺塔(一)
汉诺塔(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙
Gxjun
2018/03/21
4860
C 递归解决汉诺塔问题
法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。
Skykguj
2022/09/09
1840
汉诺塔问题(利用递归解决)内含斐波那契数列0.o
首先,我们来看看什么是汉诺塔吧~记得初知汉诺塔,就是在今年的暑假游览科技馆的时候,里面就有汉诺塔的游戏,当然耐心烦躁的我并没有解决,没想到今日学习c语言还能看见它(捂脸)。
用户11039545
2024/03/28
1680
汉诺塔问题(利用递归解决)内含斐波那契数列0.o
乐在其中:无所不能用SQL挑战经典游戏汉诺塔
苏旭晖,网名 newkid ITPUB开发版资深版主,SQL开发专家 编辑手记:感谢苏旭晖先生授权我们独家转载其系列精品文章,也欢迎大家向“Oracle”社区投稿。 SQL是一门非常灵活的语言,专家们用其挑战一切看似不可能。 问题来源   汉诺塔是源自印度神话里的玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。   大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
数据和云
2018/03/05
1K0
乐在其中:无所不能用SQL挑战经典游戏汉诺塔
小朋友学C语言(31):递归解决汉诺塔
(一)汉诺塔介绍 汉诺塔(Hanoi Tower)问题是源于印度一个古老传说: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。 考虑一下把64片金片
海天一树
2018/04/17
1.1K0
小朋友学C语言(31):递归解决汉诺塔
C语言汉诺塔数列(循环版,递归版)
汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。当所有圆盘都移到另一根柱子上时,世界就会毁灭。
GeekLiHua
2025/01/21
670
C语言汉诺塔数列(循环版,递归版)
Hanio汉诺塔代码递归实现
Hanio (汉诺塔,又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
云海谷天
2022/08/09
2600
Hanio汉诺塔代码递归实现
递归经典题目
假设你在一个电影院,你想知道自己坐在哪一排,但是前面人很多,你懒得去数了,于是你问前一排的人「你坐在哪一排?」,这样前面的人 (代号 A) 回答你以后,你就知道自己在哪一排了——只要把 A 的答案加一,就是自己所在的排了。不料 A 比你还懒,他也不想数,于是他也问他前面的人 B「你坐在哪一排?」,这样 A 可以用和你一模一样的步骤知道自己所在的排。然后 B 也如法炮制。直到他们这一串人问到了最前面的一排,第一排的人告诉问问题的人「我在第一排」。最后大家就都知道自己在哪一排了。
BUG弄潮儿
2020/06/15
1.1K0
递归经典题目
【刷题】初探递归算法 —— 消除恐惧
总结来说,递归代码的编写如同使用一个“黑盒”一样,我们需要相信递归调用会正确解决子问题,而我们只需要关注处理当前的问题。
叫我龙翔
2024/06/03
1170
【刷题】初探递归算法 —— 消除恐惧
汉诺塔问题
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
半月无霜
2023/03/03
3280
汉诺塔问题
《javascript数据结构和算法》读书笔记
它是遵循先进后出(后进先出,LIFO)原则的有序集合。栈的最新数据,称为栈顶,反之,最旧的元素就是栈底。
一粒小麦
2019/07/18
3920
《javascript数据结构和算法》读书笔记
python 游戏 —— 汉诺塔(Han
  问题源于印度的一个古老传说,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
py3study
2020/01/17
1.6K0
算法之路(四)----汉诺塔(又称河内之塔)
汉诺塔是很简单也很经典的算法之一。 汉诺塔是根据一个传说形成的数学问题: 有三根杆子A,B,C 。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
Haley_Wong
2018/08/22
1.5K0
算法之路(四)----汉诺塔(又称河内之塔)
深层剖析汉诺塔的使用(递归)
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
egoist祈
2025/01/23
830
深层剖析汉诺塔的使用(递归)
汉诺塔问题求解
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 
葆宁
2019/04/19
6150
汉诺塔问题求解
递归-汉诺塔问题
汉诺塔传说:汉诺塔问题,是源于印度一个古老的益智玩具;大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
西湖醋鱼
2020/12/30
8850
递归-汉诺塔问题
算法--递归--汉诺塔问题
游戏规则:一次只能挪一片;小的只能在大的上面;把所有的从A柱挪到C柱。 递推公式:
Michael阿明
2021/02/20
4630
算法--递归--汉诺塔问题
汉诺塔问题的思路和c语言解决方法
汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作移动圆盘的次数最少?
AUGENSTERN_
2024/04/09
1660
汉诺塔问题的思路和c语言解决方法
Python 递归解决汉诺塔问题
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
Skykguj
2022/09/09
2640
Python 递归解决汉诺塔问题
汉诺塔(问题以及扩展)
汉诺塔问题(三柱及四柱)详解 汉诺塔问题-步数 关于步数 是个很简单的问题 高中大家都学过 可能也做过类似的题
杨鹏伟
2020/09/11
1.1K0
相关推荐
NYOJ------汉诺塔(一)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文