做水題做的好開心,簡單模擬題。。。。。。
p是每一個右括號前有多少個左括號,求出w,w表每一個右括號前第幾個左括號與他匹配。。。
直接根據p模擬出整個括號字符串,然後每遇到一個右括號,向前數第幾個左括號與她匹配
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <stack>
using namespace std;
char g[35];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int a=0,b,cnt=0;
while(n--)
{
b=a;
cin>>a;
int c=a-b;
while(c--)g[cnt++]='{';
g[cnt++]='}' ;
}
//for(int i=0;i<cnt;i++)
//cout<<g[i]<<' ';
//cout<<endl;
for(int i=0;i<cnt;i++)
{
//cout<<g[i]<<' ';
if(g[i]=='}')
{
int j=i-1;
int sl=0,sr=0;
while(j>=0)
{
if(g[j]=='}')sr++;
if(g[j]=='{'&&sr==0){sl++;break;}
if(g[j]=='{')sl++,sr--;
j--;
}
cout<<sl<<' ';
}
}
cout<<endl;
}
return 0;
}