Uva 514 Rails

注意输出格式

 

 1 /*对于已经给出的入栈顺序判断出栈顺序是否正确*/
 2 
 3 #include
 4 #include
 5 #include
 6 using namespace std;
 7 const int num = 1000 + 10;
 8 int target[num];
 9 int main()
10 {
11     int n, i;
12     scanf_s("%d", &n);
13     while (n) {
14         cin >> target[1];
15         if (!target[1])//输出格式格式
16         {
17             printf("\n");
18             cin >> n; 
19             continue;
20         }
21         for (i = 2; i <= n; i++)
22             cin >> target[i];
23         int A = 1, B = 1, ok = 1;
24         stack<int> s;
25         while (B <= n)
26         {
27             if (A == target[B]) { A++, B++; }//判断有没有直接入栈出栈的
28             else if (!s.empty() && s.top() == target[B]) { s.pop(); B++; }//判断是否符合顺序出栈规则
29             else if (A <= n) { s.push(A); A++; }//当A数全部入栈,此功能失效
30             else { ok = 0; break; }
31         }
32         printf("%s\n", ok ? "Yes" : "No");
33     }
34     return  0;
35 
36 }

 

你可能感兴趣的:(Uva 514 Rails)