1. 程式人生 > >愚人節的禮物 (思維題)

愚人節的禮物 (思維題)

題目描述:

四月一日快到了,Vayko想了個愚人的好辦法——送禮物。嘿嘿,不要想的太好,這禮物可沒那麼簡單,Vayko為了愚人,準備了一堆盒子,其中有一個盒子裡面裝了禮物。盒子裡面可以再放零個或者多個盒子。假設放禮物的盒子裡不再放其他盒子。 用()表示一個盒子,B表示禮物,Vayko想讓你幫她算出愚人指數,即最少需要拆多少個盒子才能拿到禮物。

Input

本題目包含多組測試,請處理到檔案結束。 每組測試包含一個長度不大於1000,只包含'(',')'和'B'三種字元的字串,代表Vayko設計的禮物透檢視。 你可以假設,每個透檢視畫的都是合法的。

Output

對於每組測試,請在一行裡面輸出愚人指數。

Sample Input

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

Sample Output

4
1

程式碼:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
const int maxn =10010;
using namespace std;
int main()
{
    char c[1000];
    while(scanf("%s",c)!=EOF)
    {
        int sum=0;
        int len=sizeof(c);
        for(int i=0;i<len;i++)
        {

                       if(c[i]=='(')//遇到 '('  先加1再說
               sum++;

              else if(c[i]==')')如果這裡湊成了一個完整的括號就減1
               {
                   sum--;
                   //continue;
               }

               else if(c[i]!='('&&c[i]!=')')//不是左括號又不是右括弧,就是禮物了
               {

                  // sum++;
                   break;//遇到禮物就跳出,不需要再找了
               }
               // else sum++;


        }
             printf("%d\n",sum);
    }
    return 0;
}
 /*
上方的這幾者是並列情況,不是自己剛開始想的i與i+1,僅用這種情況找()太侷限,(()),這種情況就無法判斷
*/

自己剛做時,把題目想的太簡單,認為只要從左方尋找有幾個  '('     就行,但是在真的禮物之前可能會有真正的空盒子。

例如:(((()(B))))   這種情況正確的結果是4,若按這種思路結果會是5.