Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 22797 | Accepted: 13363 |
Description
S (((()()())))
P-sequence 4 5 6666
W-sequence 1 1 1456
Input
Output
Sample Input
2 6 4 5 6 6 6 6 9 4 6 6 6 6 8 9 9 9
Sample Output
1 1 1 4 5 6 1 1 2 4 5 1 1 3 9
Source
1 //poj 1068 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #include <stack> 6 #include <iostream> 7 using namespace std; 8 stack<int> s; 9 int main(){ 10 //freopen("D:\\INPUT.txt","r",stdin); 11 int t,n; 12 cin>>t; 13 while(t--){ 14 while(!s.empty()){ 15 s.pop(); 16 } 17 cin>>n; 18 int i,j,k,num,pre=0; 19 for(i=0;i<n;i++){ 20 if(i){ 21 cout<<" "; 22 } 23 scanf("%d",&num); 24 //cout<<num<<endl; 25 j=num-pre;//相邻两个右括号之间的左括号数目-1 26 pre=num;//记录前一个右括号前面哪有几个左括号 27 if(j==1){//多一个左括号 28 cout<<1; 29 if(!s.empty()){ 30 s.top()++; 31 } 32 } 33 else{ 34 if(!j){//相等 35 int next=++s.top(); 36 cout<<s.top(); 37 s.pop(); 38 if(!s.empty()){ 39 s.top()+=next; 40 } 41 } 42 else{//隔了不止一个左括号 43 cout<<1; 44 j--; 45 while(j--){ 46 s.push(0); 47 } 48 s.top()++; 49 } 50 } 51 } 52 cout<<endl; 53 //cout<<"aa"<<endl; 54 } 55 return 0; 56 }
原文:http://www.cnblogs.com/Deribs4/p/4644094.html