首页 > 学院 > 开发设计 > 正文

1051. Pop Sequence (25)

2019-11-11 05:30:57
字体:
来源:转载
供稿:网友

1. 原题: https://www.patest.cn/contests/pat-a-PRactise/1051

2. 思路:

题意:给定入栈序列1~N,判断给出的出栈序列是否可能。思路:数据栈的问题。直接利用stl中的栈来模拟就好了。

3. 源码(已AC):

#include<iostream>#include<stack>using namespace std;int main(void){	//freopen("in.txt", "r", stdin);	int M, N, K;	cin >> M >> N >> K;	int num;//记录出栈的数值	for (int i = 0; i < K; i++ )	{		int cur = 1;//由于是1~N,直接采用一个变量来记录要入栈的值,省略队列。		stack<int> s;		int flag = 1;		for (int j = 0; j < N; j++)		{			cin >> num;			if (flag)			{				while (s.empty() || s.top() != num)//空栈或者栈顶不等当前值,就入栈				{					s.push(cur);					cur++;					if ((int)s.size() > M)//栈满,则不可能					{						flag = 0; 						break;					}				}				if (flag == 1 && s.top() == num)//相等则出栈					s.pop();			}		}		if (flag == 1)			cout << "YES" << endl;		else			cout << "NO/n";	}	return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表