Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125399
  • 博文数量: 31
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 275
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-08 15:00
文章分类

全部博文(31)

文章存档

2009年(15)

2008年(16)

我的朋友

分类:

2008-11-05 17:16:37

#include
#include
using namespace std;
struct Block
{
 bool flag;
 char c;
};
char flag[41]={'a'};
int res[41];
int f[41]={0};
stack s;
stack mid;
int main()
{
 //freopen("input.txt","r",stdin);
 int number;
 int index=1;
 std::cin>>number;
 while(number--)
 {
  index=1;
  memset(res,'\0',sizeof(res));
  int n;
  std::cin>>n;
  for(int i=1; i<=n; i++)
  {
   std::cin>>f[i];
  }
  int front = 1;
  int numOfLeft = 0;
  int leftPtr=0;
  for(int i=1; i<=n; i++)
  {
   int j;
   int l = f[i]-numOfLeft;
   for(j=1; j<=l; j++)
   {
    flag[leftPtr+j]='(';
   }
   leftPtr += j;
   flag[leftPtr]=')';
   numOfLeft += l;
  }
  for(int i=1; i<=n*2; i++)
  {
   if(flag[i]=='(')
   {
    Block b;
    b.flag = false;
    b.c = '(';
    s.push(b);
   }else
   {
    int size=1;
    int midsize=0;
    while(!(((s.top().c)=='(')&&(!s.top().flag)))
    {
     if((s.top().c=='(')&&(s.top().flag))
     {
      size++;
     }
     midsize++;
     mid.push(s.top());
     s.pop();
    }
    index--;
    if(index!=0)
     std::cout<<" ";
    if(midsize==0)
    {
     std::cout<<"1";
    }else
    {
     std::cout<    }
    s.top().flag = true;
    while(!mid.empty())
    {
     s.push(mid.top());
     mid.pop();
    }
    Block ab;
    ab.flag = false;
    ab.c = ')';
    s.push(ab);
   }
  }
  std::cout< }
}
 
16MS 366K
阅读(1139) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~