179.cpp

来自「平时acm训练时ac的源代码」· C++ 代码 · 共 91 行

CPP
91
字号
//179
//Accepted 31 ms 61 kb 

#include <stdio.h>
#include <string.h>

int main(void)
{
	char *S;
	S = new char[10001];
	scanf("%s", S);
	int len = strlen(S);
	int j, c, l, r, c2;
	l = -1;
	c2 = 1;
	for (int i=len-2; i>=0; i--)
	{
		if ('('==S[i])
		{
			if (c2<2)
			{
				c2--;
			}
			else
			{
				for (j=i+1, c=0; j<len; j++)
				{
					if ('('==S[j])
					{
						c++;
					}
					else
					{
						if (0==c)
						{
							l = i;
							r = j;
							j = len;
							i = -100;
						}
						else
						{
							c--;
						}
					}
				}
			}
		}
		else
		{
			c2++;
		}
	}
	if (l==-1)
	{
		printf("No solution");
	}
	else
	{
		c = 0;
		c2 = 0;
		for (j=r+1; j<len; j++)
		{
			if ('('==S[j])
			{
				c++;
			}
			else
			{
				c2++;
			}
		}
		S[l] = '\0';
		printf("%s", S);
		printf(")");
		S[r] = '\0';
		printf("%s", &S[l+1]);
		printf("(");
		for (j=0; j<c; j++)
		{
			printf("(");
		}
		for (j=0; j<c2; j++)
		{
			printf(")");
		}
	}
	delete S;
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?