http://poj.org/problem?id=1068
这个题的话就是先把给出来的一串数字转化成括号,再把括号转化成要求的,最后输出就行了
#include<cstdio>
#include<cstring>
#include<iostream>
#include<stack>
#include<queue>
#include<algorithm>
using namespace std ;
int main()
{
stack<char>Q;
queue<char>p,q;
int n;
cin>>n;
for(int i = ; i <= n ; i++)
{
int m;
cin>>m;
int a[];
for(int j = ; j <= m ; j++)
{
cin>>a[j] ;
if(j == )
{
for(int k = ; k <= a[j] ; k++)
p.push('(');
p.push(')');
}
else
{
for(int k = a[j-] ; k < a[j] ; k++)
p.push('(');
p.push(')');
}
}
int sum ;
while(!p.empty())
{
if(p.front() == '(')
{
Q.push(p.front());
}
else
{
if(Q.top() == '(')
{
Q.pop();
Q.push();
q.push();
}
else
{
sum = ;
while(Q.top() != '(')
{
sum += Q.top() ;
Q.pop() ;
}
Q.pop() ;
q.push(sum) ;
Q.push(sum) ;
}
}
p.pop() ;
}
printf("%d",q.front());
q.pop() ;
while(!q.empty())
{
printf(" %d",q.front());
q.pop();
}
printf("\n");
}
return ;
}