1 条题解

  • 0
    @ 2025-4-14 18:45:32

    C :

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int i,j,p[25]={0},w[25],t,n,k,c,x;
    	while(scanf("%d",&t)==1)
    	{
    		for(;t;t--)
    		{
    			scanf("%d",&n);
    			x=0;c=0;
    			memset(p,0,sizeof(p));
    			memset(w,0,sizeof(w));
    			for(i=0;i<n;i++)
    			{
    				scanf("%d",&k);
    				if(c==k)p[++x]=2;
    				else{
    					while(c<k)
    						if(p[x]==0){p[x++]=1;c++;}
    						else if(p[x]==1){c++;x++;}
    						else x++;
    					p[x]=2;
    				}
    			}
    			for(i=0;i<=x;i++)
    			{
    				if(p[i]==2)
    				{
    					for(j=i-1,c=0;j>=0;j--)
    					{
    						if(p[j]==2)c++;
    						if(p[j]==1&&w[j]==0){
    							if(i==x)printf("%d",c+1);
    							else printf("%d ",c+1);
    							w[j]=1;break;}
    						if(j==0)printf("0 ");
    					}
    				}
    			}
    			printf("\n");
    		}
    	}
    	return 0;
    }
    

    C++ :

    #include <stdio.h>
    
    int main(){
    char s[150],*p,*q;
    int a,b;
    int rp,lp,lmp,is_match;
    int t,n,i,j;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        a=0,b=0;
        p=&s[0];
        j=n;
        while(j--){
            scanf("%d",&b);
            i=b-a;
            while(i--)
                *p++='(';
            *p++=')';
            a=b;
        }
        *p='\0';
        p=&s[0];
        while(*p++){
            rp=0,lp=0;
            is_match=0;
            if(*p==')'){
                q=p-1;
                while(*q=='('||*q==')'){
                    if(*q==')'){
                        rp++;
                    }
                    else if(*q=='('){
                        if(!rp)
                            is_match=1;
                        else
                            rp--;
                        lp++;
                        }
                    if(is_match){
                        printf("%d",lp);
                        break;
                    }
                    q--;
                }
                if(!is_match)
                  printf("%d",0);
                if(--n>0)
                  printf(" ");
    
            }
        }
    if(t)
    printf("\n");
    }
    return 0;
    
    }
    
    
    • 1

    信息

    ID
    3586
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者