题目地址:http://soj.me/1509
题目大意是,将1,2,3....n N个数压入栈中,然后判断出栈顺序是否合法,如果没有一种好的方法,会多很多判断之类的,代码的中的那个while循环好简洁就实现了目的。
#include <iostream>
#include <stack>
using namespace std;
int main() {
int rail_num;
while (cin >> rail_num) {
if (rail_num == 0) break;
while (1) {
int array[1001];
cin >> array[0];
if (array[0] == 0)
break;
for (int i = 1; i < rail_num; i++)
cin >> array[i];
stack<int> st;
int count_ = 0;
int number = 1;
while (number <= rail_num) {
st.push(number);
while (!st.empty() && st.top() == array[count_++]) {
st.pop();
}
number++;
}
if (st.empty())
cout << "Yes" << endl;
else
cout << "No" << endl;
}
cout << endl;
}
//system("pause");
return 0;
}