题目链接:http://poj.org/problem?id=1363
解题思路:STL —— stack
1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1363 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include <algorithm> 7 #include <iostream> 8 #include <iterator> 9 #include <iomanip> 10 #include <cstring> 11 #include <cstdlib> 12 #include <string> 13 #include <vector> 14 #include <cstdio> 15 #include <cctype> 16 #include <cmath> 17 #include <queue> 18 #include <stack> 19 #include <list> 20 #include <set> 21 #include <map> 22 using namespace std; 23 24 /////////////////////////////////////////////////////////////////////////// 25 typedef long long LL; 26 const double PI=acos(-1.0); 27 /////////////////////////////////////////////////////////////////////////// 28 29 /////////////////////////////////////////////////////////////////////////// 30 //Add Code: 31 /////////////////////////////////////////////////////////////////////////// 32 33 int main(){ 34 /////////////////////////////////////////////////////////////////////// 35 //Add code: 36 int n,i,j,t=1,a[1005]; 37 stack<int> s; 38 while(scanf("%d",&n)!=EOF){ 39 if(n==0) break; 40 if(t>1) printf(" "); 41 while(scanf("%d",&a[0]) && a[0]){ 42 for(i=1;i<n;i++) scanf("%d",&a[i]); 43 j=0; 44 for(i=1;i<=n;i++){ 45 s.push(i); 46 if(i==a[j]){ 47 s.pop(); 48 j++; 49 while(!s.empty() && s.top()==a[j]){ 50 s.pop(); 51 j++; 52 } 53 } 54 } 55 printf(j==n? "Yes ":"No "); 56 while(!s.empty()) s.pop(); 57 } 58 t++; 59 } 60 /////////////////////////////////////////////////////////////////////// 61 return 0; 62 } 63 64 /////////////////////////////////////////////////////////////////////////// 65 /* 66 Testcase: 67 Input: 68 5 69 1 2 3 4 5 70 5 4 1 2 3 71 0 72 6 73 6 5 4 3 2 1 74 0 75 0 76 Output: 77 Yes 78 No 79 80 Yes 81 */ 82 ///////////////////////////////////////////////////////////////////////////