pku 1363 车站

#include <iostream> using namespace std; #define MAX 1005 int map[MAX]; int result[MAX]; struct Stack { int stack[MAX]; int index; Stack():index(0) {} void push(int& v) { stack[index++] = v; } int pop() { return stack[--index]; } int top() { return stack[index-1]; } bool isEmpty() { return index == 0; } void clear() { index = 0; } int size() { return index; } }; int main() { Stack s; int n, i; while(scanf("%d", &n) && n != 0) { while(scanf("%d", &map[1]) && map[1] != 0) { for(i = 2; i <= n; ++i) scanf("%d", &map[i]); int j = n; for(i = n; i >= 1; --i) { s.push(map[i]); while(!s.isEmpty() && s.top() == j) { j--; s.pop(); } } if(s.isEmpty()) printf("Yes/n"); else printf("No/n"); s.clear(); } printf("/n"); } return 0; } //我的思想方法是: // 从出栈序列map[]的尾部开始,进栈,不断寻找最大的出栈,次大的出栈... // 最后若栈空则为Yes,否则为No  

你可能感兴趣的:(struct,include)