您的位置:首页 > 其它

出栈顺序判断

2015-10-16 09:54 211 查看
#include<iostream>
#include<fstream>
#include<stack>
#include<sstream>
using namespace std;

int main()
{
ifstream in("stack.txt");
for (int n, line = 0; in >> n&&n&&in.ignore();)
{
cout << (line++ ? "\n" : "");
for (string s; getline(in, s) && s != "0";)
{
istringstream sin(s);
stack<int> st;
for (int last = 0, coach; sin >> coach; st.pop())
{

for (int p = last + 1; p <= coach; p++)
st.push(p);
if (last < coach)
last = coach;
if (st.top ()!= coach)
break;

}
cout << (!sin ? "YES\n" : "NO\n");
}
}
}

测试样例:

5

3 2 1 5 4

5 4 1 2 3

0

6

6 5 4 3 2 1

0

0

每一组第一个数据代表栈内数据数目,以0结尾

输出:

YES

NO

YES
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: