1 条题解

  • 0
    @ 2025-4-12 21:50:58

    C :

    #include <stdio.h>  
    #include <stdlib.h>  
    #include <string.h>  
      
    struct bracket  
    {  
        char data[101];  
        int top;  
    };  
      
    void main()  
    {  
        char str[101],flag[101];  
        int i,len;  
        struct bracket *p, *q;  
      
        while(scanf("%s",str) != EOF)  
        {   
            p=(struct bracket *)malloc(sizeof(struct bracket));  
            q=(struct bracket *)malloc(sizeof(struct bracket));  
            p->top = q->top = 0;  
            len = strlen(str);  
            for(i=0;i<len;i++)  
            {  
                switch(str[i])  
                {  
                    case '(' :  
                        p->data[p->top++] = str[i];  
                        flag[i]=' ';  
                        break;  
                    case ')' :  
                        if(p->top>0)  
                        {  
                            flag[i]=' ';  
                            p->top-=1;  
                        }else  
                        {  
                            flag[i]='?';  
                        }  
                        break;  
                    default :  
                        flag[i]=' ';  
                        break;  
                }  
            }  
            for(i=len-1;i>=0;i--)  
            {  
                switch(str[i])  
                {  
                    case ')' :  
                        q->data[q->top++] =str[i];  
                        break;  
                    case '(' :  
                        if(q->top>0)  
                        {  
                            q->top-=1;  
                        }else  
                        {  
                            flag[i]='$';  
                        }  
                        break;  
                    default :  
                        break;  
                }  
            }    
    		for(i=0;i<len;i++)
    			printf("%c",str[i]);
    		printf("\n");
    		for(i=0;i<len;i++)
    			printf("%c",flag[i]);
    		printf("\n"); 
        }    
    }  
    

    C++ :

    #include <stdio.h>
    #include <string.h>
    char s[111];
    void run()
    {
    	int k=0,i,n;
    	char o[111];
    	printf("%s\n",s);
    	n=strlen(s)-1;
    	strcpy(o,"");
    	for(i=0;i<=n;i++)
    		strcat(o," ");
    	k=0;
    	for(i=0;i<=n;i++)
    	{
    		if(s[i]=='(')
    			k++;
    		if(s[i]==')')
    		{
    			if(k>0)
    				k--;
    			else
    				o[i]='?';
    		}
    	}
    	k=0;
    	for(i=n;i>=0;i--)
    	{
    		if(s[i]==')')
    			k++;
    		if(s[i]=='(')
    		{
    			if(k>0)
    				k--;
    			else
    				o[i]='$';
    		}
    	}
    	printf("%s\n",o);
    }
    int main()
    {
    	gets(s);
    	while(strlen(s)!=0)
    	{
    		run();
    		strcpy(s,"");
    		gets(s);
    	}
    	return 0;
    }
    

    Pascal :

    var a:array[1..255]of char;i,j,k,n:integer;
    begin
     while not eof do
      begin
        n:=0;k:=0;
        fillchar(a,sizeof(a),#0);
        while not eoln do
         begin
          inc(n);
          read(a[n])
         end;
        readln;
        for i:=1 to n do
         begin write(a[i]);if (a[i]<>'(')and(a[i]<>')') then a[i]:=' 'end;
        writeln;
        for i:=1 to n div 2 do
         for j:=1 to n do
          if a[j]='(' then 
          begin
           k:=j;
           while (a[k+1]=' ')or(a[k+1]=')')do
            begin
             inc(k);
             if a[k]=')'then begin a[j]:=' ';a[k]:=' ';break end
            end
          end;
        for i:=1 to n do
         case a[i]of
          '(':write('$');
          ')':write('?');
          ' ':write(' ')
         end;
         writeln
      end
    end.
    

    Java :

    import java.util.*;
    
    public class Main {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner sc = new Scanner(System.in);
    		while(sc.hasNextLine())
    		{
    			String t1=sc.nextLine();
    			StringBuffer sb=new StringBuffer(t1);
    			StringBuffer t2=new StringBuffer(200);
    			for(int i=0;i<t1.length();i++)
    			{
    				if(t1.charAt(i)=='(')
    					t2.append('(');
    				else if(t1.charAt(i)==')')
    				{
    					if(t2.length()>0)
    						t2.deleteCharAt(t2.length()-1);
    					else
    						sb.setCharAt(i, '?');
    				}
    			}
    			t2.setLength(0);
    			for(int i=t1.length()-1;i>=0;i--)
    			{
    				if(t1.charAt(i)==')')
    					t2.append(')');
    				else if(t1.charAt(i)=='(')
    				{
    					if(t2.length()>0)
    						t2.deleteCharAt(t2.length()-1);
    					else
    						sb.setCharAt(i, '$');
    				}
    			}
    			for(int i=0;i<sb.length();i++)
    			{
    				if(sb.charAt(i)!='?' && sb.charAt(i)!='$')
    					sb.setCharAt(i, ' ');
    			}
    			System.out.print(t1);
    			System.out.print('\n');
    			System.out.print(sb);
    			System.out.print('\n');
    		}
    	}
    }
    
    • 1

    信息

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