1. 题目内容
1.1 问题描述
假设以1 和0 分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由1 和0 组成的序列,称可以操作的序列为合法序列,否则称为非法序列。写出一个算法,判定所给的操作序列是否合法。若合法,返回1,否则返回0。输入序列的长度不超过30个操作
1.2 输入形式
第一个数字为操作序列的总数 后面的为操作序列的具体内容,每两个操作之间以空格键隔开。
1.3 输出形式
如果操作序列为合法序列,输出1,如果操作序列为非法序列,输出0;
1.4 样例输入
4 1 1 1 1
1.5 样例输出
0
2. 大致思路
设定变量stackNum来记录当前栈中元素的个数
3. 实现代码
#include<stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
int i = 0;
int stackNum = 0;
int flag = 0; // 记录输入中途stackNum有没有负数的情况
for(i = 0; i < n; i++)
{
int operation;
scanf("%d", &operati

本文介绍了一个简单的算法,通过栈数据结构来验证输入的操作序列(1和0表示入栈和出栈),判断其是否符合栈的基本操作规则。对于给定的序列,算法会检查是否在操作过程中栈顶元素数量出现负数,以此判断序列是否合法并输出相应结果:1表示合法,0表示非法。
最低0.47元/天 解锁文章
3689





