ballball各位dalao来看下代码吧,调了一天错误救助
查看原帖
ballball各位dalao来看下代码吧,调了一天错误救助
376467
QDHSLGYYJK楼主2020/11/19 21:42
#include<cstdio>
using namespace std;
int main(){
	char c=getchar();
	int ans=0,sum=1,l=0,r=0;
	while (c=='('||c==')'){
		if (c=='(')
			++l;
		else
			++r;
		if (l<r)
			l=0,r=0;
		if (l>=r&&r)
			if (ans<r<<1)
				ans=r<<1,sum=1;
			else
				if (ans==r<<1)
					++sum;
		c=getchar();
	}
	printf("%d %d\n",ans,sum);
	return 0;
} 

思路大概是每读入一个数时就判断右括号数是否大于左括号数,如是就计数清零(此时肯定已经不是合法子串),否则而且右括号数不为零时计算最长(ans),最多(sum),但就是第四个点错误(不知原数据),sum应该是1我却输出的4。

2020/11/19 21:42
加载中...