Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 19434 | Accepted: 11734 |
S (((()()()))) P-sequence 4 5 6666 W-sequence 1 1 1456根据题目意思只要依据p数组模拟出该括号字符串 再将w数组求出来即可
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int a[25],ans[25],n,m,i,j; char mm[25]; cin>>n; while(n--) { cin>>m; a[0]=0; for(i=1;i<=m;i++) cin>>a[i]; for(i=1;i<=m;i++) for(j=a[i-1]+i;j<=a[i]+i;j++) { if(j==a[i]+i) { mm[j]=')';//cout<<j<<" "<<mm[j]; } else { mm[j]='(';//cout<<j<<" "<<mm[j]; } } int l=0; int s=0; for(i=1;i<j;i++) if(mm[i]==')') { int sum=1; for(int k=i-1;k>0;k--) { if(mm[k]==')') { s++; sum++; } else if(mm[k]=='('&&s) { s--; } else if(mm[k]=='('&&!s) { ans[l]=sum;//cout<<k<<endl; l++; break; } } } for(i=0;i<l;i++) { if(i==0) cout<<ans[i]; else cout<<" "<<ans[i]; } cout<<endl; } return 0; }
原文地址:http://blog.csdn.net/fanerxiaoqinnian/article/details/37965935