2019年中南大学机试题b题
作者:互联网
2019年中南大学机试题b题
题目描述
PIPI现有a-z 26个小球模拟出入栈操作,小球按照a~z的顺序压入栈,在栈顶的元素可以随时被取出,在游戏开始前给出任意26个字母的一些排列,问是否能够由出栈顺序得到这个排列。
输入
输入包含多组测试用例。
每组测试用例包含26个字母组成的一个序列。
输出
若出栈顺序合法,输出"yes",否则输出"no".
样例输入
abcdefghijklmnopqrstuvwxyz
zabcdefghijklmnopqrstuvwxy
样例输出
yes
no
题目思路
这题和之前讲解的铁轨思路一模一样。
#include<cstdio>
#include<stack>
using namespace std;
int main()
{
stack<char> s1;
char s[30];
int flag, cnt;
while(gets(s))
{
flag = cnt = 0;
for(int i = 0; i < 26; i++)
{
if(!s1.empty())
{
if(s1.top() == s[cnt])
{
s1.pop();
cnt++;
i--;
}
else
{
if(i + 'a' == s[cnt])
cnt++;
else
s1.push(i + 'a');
}
}
else
{
if(i + 'a' == s[cnt])
cnt++;
else
s1.push(i + 'a');
}
}
while(!s1.empty())
{
if(s1.top() == s[cnt])
{
cnt++;
s1.pop();
}
else
{
flag = 1;
break;
}
}
while(!s1.empty())
s1.pop();
if(!flag) printf("yes\n");
else printf("no\n");
}
return 0;
}
标签:cnt,试题,中南大学,++,s1,26,else,flag,2019 来源: https://www.cnblogs.com/Mrs-Jiangmengxia/p/12594358.html