这道题的题意有一点绕,意思是给一个括号序列,只有前半部分都为(后半部分都为)为标准序列,现在给一个字符串,我们可以选择其中一些标准序列删除来保证原序列无论如何更改都不会变化。然后我们会发现如果要删除两个标准序列,一定可以结合1个所以一定只有一个可以删的,接下来,我们要保证它删完后不能在包含标准序列,那么我们设两个指针,从首尾分别出发,知道相交停止,找出所有(和)然后按顺序输出即可
#include<stdio.h>
#include<string.h>
int main()
{
char a[1001];
scanf("%s",a);
int i,j,n=0;
for(i=0;i<strlen(a);i++)
{
if(a[i]=='(')
{
for(j=strlen(a)-1;j>i;j--)
if(a[j]==')')
{
a[j]='0';
a[i]='0';
break;
}
if(j==i) break;
n=n+2;
}
}
if(n!=0)
{
printf("1\n%d\n",n);
for(i=0;i<strlen(a);i++)
if(a[i]=='0') printf("%d ",i+1);
}
else printf("0");
}