zoukankan      html  css  js  c++  java
  • 汉诺塔(三)(水,模拟)

    汉诺塔(三)

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
     
    描述

    在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的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
    样例输入
    3
    2 1
    1 2
    3 3
    1 2
    1 3
    3 2
    2 1
    2 1
    样例输出
    legal
    illegal
    illegal
    题解:栈模拟下就行了;
    代码:
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<stack>
    using namespace std;
    const int INF=0x3f3f3f3f;
    #define mem(x) memset(x,0,sizeof(x))
    #define SI(x) scanf("%d",&x)
    #define SL(x) scanf("%lld",&x)
    #define PI(x) printf("%d",x)
    #define PL(x) printf("%lld",x)
    #define P_ printf(" ")
    #define T_T while(T--)
    
    int main(){
    	int T,n,q;
    	SI(T);
    	T_T{
    		stack<int>s[4];
    		SI(n);SI(q);
    		for(int i=n;i>=1;i--)s[1].push(i);
    		int a,b;
    		bool ans=true;
    		while(q--){
    			SI(a);SI(b);
    			if(!ans)continue;
    			if(s[a].empty()){
    				ans=false;continue;
    			}
    			if(!s[b].empty()&&s[a].top()>s[b].top()){
    				ans=false;continue;
    			}
    			s[b].push(s[a].top());
    			s[a].pop();
    		}
    		if(ans)puts("legal");
    		else puts("illegal");
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    leetcode 237: Delete Node in a Linked List
    谈谈地图中的道路绘制
    关于double类型数字相加位数发生变化的问题
    iOS_25_彩票设置的cell的数据源模型的封装
    session_start() [function.session-start]:
    Android系统Gps分析(一)【转】
    Android4.4 GPS框架分析【转】
    GPIO设备虚拟文件结点的创建【转】
    高通MSM8255 GPS 调试分析&&Android系统之Broadcom GPS 移植【转】
    和菜鸟一起学android4.0.3源码之硬件gps简单移植【转】
  • 原文地址:https://www.cnblogs.com/handsomecui/p/5170705.html
Copyright © 2011-2022 走看看