愚人节的礼物 :
这道题将()当做箱子,因而我只需计算在找到B之前至少需要打开多少()即可,在出现(()(B))情况,我们其实无需打开另外一个箱子,只需要直接打开B。
因此这道题的主要思想就是数清楚“(”的个数,用单个的“(”代表一个箱子。
方法一:可以考虑使用栈来进行操作。在遇见“B”之前,遇见“(”,就进行入栈,遇见“)”则执行出栈。
方法二:通过数组,与ans来对箱子的个数进行统计,在遇见“B”前,一旦遇见“(”则ans加一,遇见“)”则ans减一,以此来对箱子个数进行统计。
#include<stdio.h>
int main()
{
char gift[1010];
int i,ans;
while(scanf("%s",&gift)!=EOF)
{
i=0;
ans=0;
while(gift[i]!='B')
{
if(gift[i]=='(')
ans++;
else if(gift[i]==')')
ans--;
i++;
}
printf("%d\n",ans);
}
return 0;
}