题目链接:http://poj.org/problem?id=1363
题目大意:1~n输入,然后以题目要求进行输出,判断能否实现!“0”表示一组数据的结束~注意每组输出后有一个空行!
1 #include <iostream> 2 #include <cstdio> 3 #include <stack> 4 using namespace std; 5 int main () 6 { 7 int t,flag,s,n; 8 while (scanf("%d",&t)!=EOF) 9 { 10 flag=0; 11 if (t==0) 12 break; 13 while (1) 14 { 15 stack<int>q,qq; 16 int ko=1; 17 q.push(ko); 18 for (int i=1; i<=t; i++) 19 { 20 scanf ("%d",&n); 21 if (n==0) 22 { 23 flag=1; 24 break; 25 } 26 if (q.empty()) 27 { 28 ko++; 29 q.push(ko); 30 } 31 int s=q.top(); 32 while (s!=n) 33 { 34 if (ko==t) 35 break; 36 ko++; 37 q.push(ko); 38 s=q.top(); 39 } 40 if (s==n) 41 q.pop(); 42 } 43 if(flag) 44 break; 45 if(q.empty()) 46 puts("Yes"); 47 else 48 puts("No"); 49 } 50 printf(" "); 51 } 52 return 0; 53 }