括号配对(stack)
找规律吧 把能消除的{}给消掉 最后在注意一下presentation error的问题。。。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3351
#include<stdio.h>)
#include<stack>
#include<string.h>
#include<algorithm>
using namespace std;
char a[2005];
int main()
{
int j,i;
memset(a,0,sizeof(a));
stack<char>s;
while(1)
{
int sum1=0,sum2=0;
gets(a);
if(a[0]=='-') break;
for(i=0;a[i];i++)
{
if(s.empty())
{
s.push(a[i]);
continue;}
if(s.top()=='{'&&a[i]=='}')
{
s.pop();
continue;
}
s.push(a[i]);
}
while(s.empty()==0)
{
if(s.top()=='{')
sum1++;
else
sum2++;
s.pop();
}
if(sum1==0)
printf("%d. %d\n",++k,sum2/2);
else if(sum2==0)
printf("%d. %d\n",++k,sum1/2);
else if(sum1%2==1)
printf("%d. %d\n",++k,(sum1+sum2)/2+1);
else
printf("%d. %d\n",++k,(sum1+sum2)/2);
}
}