Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:根据面向对象的思想,把括号表示出来才是王道。In Reply To:根据面向对象的思想,把括号表示出来才是王道。 Posted by:pclimbing at 2010-08-02 11:59:44 > 先存括号,再操作。 > 我看到有许多高人用种种方法攻克此题,但我还是坚持吾道。 呃,给你的代码 AC的。就用你说的。。 #include<stdio.h> int main(){ int data,n,i,j,w,pCode[20],wCode[20]; char p[40]; scanf("%d", &data); while(data--){ //------------------------------------- scanf("%d",&n); for(i=0; i<n; ++i){ scanf("%d",&pCode[i]); } //-------------------------------------- for(i=0; i<n; ++i){ if(i==0){ for(j=0; j<pCode[0]; ++j){ p[j]='('; } p[j]=')'; }else if(pCode[i]>pCode[i-1]){ int t1,t; t1= pCode[i]-pCode[i-1]; for(t=0; t<t1; ++t){ p[++j]='('; } p[++j]=')'; }else if(pCode[i]==pCode[i-1]){ p[++j]=')'; } } for(i=0; i<2*n; ++i){ printf("%c",p[i]); } printf("\n"); w=0; //------------------------------------------ for(i=0; i<2*n; ++i){ if(p[i]==')'){ int k,flag=0; for(k=i; k>=0;--k){ if(p[k]=='('){ wCode[w++]=(flag+1)/2; p[k]=0; k=-1; }else{ flag++; } } } } for(i=0; i<n; ++i){ printf("%d ",wCode[i]); } printf("\n"); //------------------------------------------ } system("pause"); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator