您的位置:首页 > 其它

Problem B

2015-07-27 17:53 155 查看
四月一日快到了,Vayko想了个愚人的好办法——送礼物。嘿嘿,不要想的太好,这礼物可没那么简单,Vayko为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面可以再放零个或者多个盒子。假设放礼物的盒子里不再放其他盒子。

用()表示一个盒子,B表示礼物,Vayko想让你帮她算出愚人指数,即最少需要拆多少个盒子才能拿到礼物。

 

[align=left]Input[/align]
本题目包含多组测试,请处理到文件结束。每组测试包含一个长度不大于1000,只包含'(',')'和'B'三种字符的字符串,代表Vayko设计的礼物透视图。你可以假设,每个透视图画的都是合法的。

 

[align=left]Output[/align]
对于每组测试,请在一行里面输出愚人指数。
 

[align=left]Sample Input[/align]

((((B)()))())
(B)

 

[align=left]Sample Output[/align]

4
1

 

这道题猛的一看还没有思路,首先要给先找出B的位置,然后只要处理B前面的括号就行了,前面每有一个配对的括号就给B的位置减二,最后输出就行了。以下是我写的代码

#include<stdio.h>

#include<string.h>

char a[1000],c[1000];

int i,j=1,k,b;

int main()

{

 while(gets(a))

 {

  for(i=0;i<strlen(a);i++)

  if(a[i]=='B')

  k=i;

  b=k;

  c[0]=a[0];

  for(i=1;i<b;i++)

                {

                    c[j]=a[i];

                    if(j==0)

                        j++;

                    else

                    {

                    if(c[j-1]=='('&&c[j]==')')

                        k=k-2,j--;

                    else

                        j++;

                    }

                }

  printf("%d\n",k);

  j=1;

  

 }

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: