zoukankan      html  css  js  c++  java
  • 又见括号问题

    在黄霖的博客里看到这道题  是他们湘大比赛的一道 刚开始自己想的比较复杂 一看他 的 代码 原来这么简单 啊啊~TAT。。。看完他的思想 自己在写了一遍,其实 写的 和他差不多啦。。

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int i,j,n,m,len,k,num,f[10010];
    	char s[10100];
    	while(~scanf("%d",&n))
    	{
    		while(n--)
    		{
    			scanf("%s",s+1);
    			len=strlen(s+1);
    			f[0]=0;
    			for(i=1;i<=len;i++)
    				if(s[i]=='(')
    					f[i]=f[i-1]+1;    //左括号比右括号多的个数 f[i]都不能小于0
    				else f[i]=f[i-1]-1;
    			for(i=len;i>0;i--)
    			{
    				if(f[i]>=2&&s[i]=='(')  //只有 f[i]>=2时 ‘(’变成‘)’  f[i]才不会<0
    				{
    					k=i;
    					break;
    				}
    			}
    			if(i==0)
    				printf("No solution\n");
    			else 
    			{
    				for(i=1,num=0;i<k;i++)
    				{
    					if(s[i]=='(')
    						num++;
    					printf("%c",s[i]);
    				}
    				printf(")");
    				for(i=0;i<len/2-num;i++)
    					printf("(");      //其他的只要先填完(   再填 )就ok了
    				for(j=0;j<len-k-i;j++)
    					printf(")");
    				printf("\n");
    			}
    		}
    	}
    	return 0;
    }
    
    
    
  • 相关阅读:
    为用户添加角色
    WCF、MongoDB
    文件分布式存储实现例程
    Redis的Replication(复制)
    Lucene热词显示并选择
    Lucene热词统计
    通过队列解决Lucene文件并发创建索引
    Lucene.net应用
    Lucene.net
    Redis
  • 原文地址:https://www.cnblogs.com/assult/p/3098007.html
Copyright © 2011-2022 走看看