HDU1870 愚人节的礼物【堆栈+输入输出】
生活随笔
收集整理的這篇文章主要介紹了
HDU1870 愚人节的礼物【堆栈+输入输出】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
愚人節的禮物
Time Limit: 5000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10260????Accepted Submission(s): 6064Problem Description 四月一日快到了,Vayko想了個愚人的好辦法——送禮物。嘿嘿,不要想的太好,這禮物可沒那么簡單,Vayko為了愚人,準備了一堆盒子,其中有一個盒子里面裝了禮物。盒子里面可以再放零個或者多個盒子。假設放禮物的盒子里不再放其他盒子。
用()表示一個盒子,B表示禮物,Vayko想讓你幫她算出愚人指數,即最少需要拆多少個盒子才能拿到禮物。
Input 本題目包含多組測試,請處理到文件結束。
每組測試包含一個長度不大于1000,只包含'(',')'和'B'三種字符的字符串,代表Vayko設計的禮物透視圖。
你可以假設,每個透視圖畫的都是合法的。
Output 對于每組測試,請在一行里面輸出愚人指數。
Sample Input ((((B)()))()) (B) Sample Output 4 1 Author Kiki Source 2008杭電集訓隊選拔賽——熱身賽
問題鏈接:HDU1870 愚人節的禮物。
問題描述:參見上述鏈接。
問題分析:
這是一個字符串輸入輸出處理問題,也是一個堆棧問題。表達式處理問題,最方便的是用堆棧來處理。
實際上并不需要一個堆棧,只要按照堆棧的處理過程進行即可。
程序說明:
這個程序是C++實現字符串輸入和處理的實例,其方法需要熟練掌握。
變量level用于記錄出現過幾個左括號還沒有得到匹配。
程序不夠優化,改寫了一版,可以比較著讀一下。另外,添加了C語言的版本。
AC的C++語言程序(正解)如下:
/* HDU1870 愚人節的禮物 */#include <iostream>using namespace std;int main() {string s;int level, i;while(getline(cin, s)) {level = 0;i = 0;while(s[i]) {if(s[i] == 'B')break;else if(s[i] == '(')level++;else if(s[i] == ')')level--;i++;}cout << level << endl;}return 0; }
AC的C語言程序如下:
/* HDU1870 愚人節的禮物 */#include <stdio.h>#define N 1000char s[N+1];int main(void) {int level, i;while(fgets(s, N, stdin)) {level = 0;i = 0;while(s[i] != '\n') {if(s[i] == 'B')break;else if(s[i] == '(')level++;else if(s[i] == ')')level--;i++;}printf("%d\n", level);}return 0; }
AC的C++語言程序如下:
/* HDU1870 愚人節的禮物 */#include <iostream> #include <string>using namespace std;int main() {string s;int len, level;while(getline(cin, s)) {len = s.length();level = 0;for(int i=0; i<len; i++) {if(s[i] == 'B')break;else if(s[i] == '(')level++;else if(s[i] == ')')level--;}cout << level << endl;}return 0; }
轉載于:https://www.cnblogs.com/tigerisland/p/7564087.html
總結
以上是生活随笔為你收集整理的HDU1870 愚人节的礼物【堆栈+输入输出】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: realme发布最便宜5G手机,心生不忿
- 下一篇: 【vue】设置浏览器上方的标题和图标