YTU 3001: 判断操作是否合法(栈和队列)
3001: 判断操作是否合法(栈和队列)
时间限制: 1 Sec 内存限制: 128 MB
提交: 4 解决: 2
题目描述
假设以I和O分别表示进栈和出栈操作,栈的初态和终态均为空,进栈和出栈的操作序列可表示为仅由I和O组成的序列。
顺序栈的定义为
输入
输入为一个字符串,表示进栈出栈的操作序列,该序列存储在栈中。
输出
若操作序列合法则输出“Yes”,否则输出"No"。
样例输入
IOIIOIOO
样例输出
Yes
提示
1、只需提交你所编写的算法
2、栈的初态和终态均为空
迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SizeMax 105
typedef char ElemType;
typedef struct
{
ElemType data[SizeMax];
int top;
} SqStack;
void InitStack(SqStack *&s)
{
s=(SqStack*)malloc(sizeof(SqStack));
s->top=-1;
}
bool Push(SqStack *&s,ElemType c)
{
if(s->top==SizeMax-1)return false;
s->top++;
s->data[s->top]=c;
return true;
}
int judge(SqStack *s)
{
int t=0;
for(int i=0; i<=s->top; i++)
{
if(s->data[i]=='I')t++;
else t--;
if(t<0)return 0;
}
if(t==0)return 1;
else return 0;
}
void DestroyStack(SqStack *&s)
{
free(s);
}
int main()
{
SqStack *s=NULL;
InitStack(s);
char c[SizeMax];
gets(c);
for(int i=0; i<(int)strlen(c); i++)
Push(s,c[i]);
if(judge(s))printf("Yes\n");
else printf("No\n");
DestroyStack(s);
return 0;
}
YTU 3001: 判断操作是否合法(栈和队列)的更多相关文章
- ACM YTU 十进制与八进制的转换 (栈和队列) STL栈调用
十进制与八进制的转换(栈和队列) Description 对于输入的任意一个非负十进制整数,利用栈打印输出与其等值的八进制数. Input 111 Output 157 Sample Input 14 ...
- Python列表操作——模拟实现栈和队列
1.实现栈: stack=[] def pushit(): stack.append(raw_input('Enter New String:').strip()) def popit(): if l ...
- 用LinkedList集合演示栈和队列的操作
在数据结构中,栈和队列是两种重要的线性数据结构.它们的主要不同在于:栈中存储的元素,是先进后出:队列中存储的元素是先进先出.我们接下来通过LinkedList集合来演示栈和队列的操作. import ...
- C数据结构(文件操作,随机数,排序,栈和队列,图和遍历,最小生成树,最短路径)程序例子
文件操作 文件打开方式 意义 ”r” 只读打开一个文本文件,只允许读数据 ”w” 只写打开或建立一个文本文件,只允许写数据 ”a” 追加打开一个文本 ...
- LintCode389.判断数独是否合法
LintCode简单题:判断数独是否合法 问题描述: 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项: 一个合法的数独(仅部分填充)并不一定是可解的.我们 ...
- YTU 3002: 出栈顺序(栈和队列)
3002: 出栈顺序(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 80 解决: 20 题目描述 给出一个入栈序列,和一个出栈序列,判断该出栈序列是否正确. 输入 输入包含 ...
- YTU 3005: 皇后问题(栈和队列)
3005: 皇后问题(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 6 解决: 3 题目描述 编写一个函数,求解皇后问题:在n*n的方格棋盘上,放置n个皇后,要求每个皇后不 ...
- YTU 3004: 栈的基本运算(栈和队列)
3004: 栈的基本运算(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 32 解决: 10 题目描述 编写一个程序,实现顺序栈的各种基本运算,主函数已给出,请补充每一种方法 ...
- YTU 3003: 括号匹配(栈和队列)
3003: 括号匹配(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...
随机推荐
- 修改RMAN list命令输出的时间格式
根据需要,修改rman list命令输出结果的时间显示 $ rman target / Recovery Manager: Release - Production on Wed Jul :: Cop ...
- Oracle Flashback Technologies - 闪回数据库
Oracle Flashback Technologies - 闪回数据库 根据指定的SCN,使用rman闪回数据库 #查看可以闪回到多久前 SQL> select * from v$flash ...
- MySQL的半同步复制监控
(1)master端 >show variables like 'rpl_semi_sync%'; +------------------------------------+-------+ ...
- 5.POST中文乱码解决方案
Spring Web MVC提供了Filter用于解决POST方式造成的中文乱码问题,具体配置如下: <filter> <filter-name>CharacterEncodi ...
- bash 截取字符串
转载自http://blog.chinaunix.net/uid-1757778-id-3162034.html 命令的2种替换形式 $()和 ``示例:截断字符串 a): #截取文件名称 ...
- C 排序法
1.冒泡法,相邻的两个数值,进行比较,满足条件的进行互换 #include <stdio.h> int main() { int index, j, tmp; , , ,}; ; inde ...
- java数组转化成集合
package com.shb.web; import java.util.Arrays;import java.util.List; import com.sun.xml.internal.ws.u ...
- Script to set the Purchase Order Status to ‘OPEN’(将采购订单重新打开)
Business Requirement: The finance user requests the IT team to change the PO status to OPEN as they ...
- [ubuntu] ubuntu13.04安装rabbitcvs管理svn
加入源 sudo add-apt-repository ppa:rabbitvcs/ppa 更新 sudo apt-get update 安装软件 sudo apt-get install rabbi ...
- Java笔试题解答和部分面试题
面试类 银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...