萌新题解~

_Cloud_

2020-01-13 20:21:54

Solution

题目叙述简化一下:就是一个字符串任意组合,有多少个“Bulbasaur”。 #### 首先我们会想到“数组模拟”。 那怎么实现呢? 很显然,无论字母怎么组合,每种字母的个数不会变。 这就好办了,我们用一个数组“word”来存储字符串中我们所需要的字母种类的个数。在根据个数来判断。 具体详见代码: ~~原谅我奇怪的码风~~ ```c #include <iostream> #include <cstdio>//我喜欢写两个标准头文件 using namespace std;//“Bulbasaur”中有1个B l b s r ;2个u a; int word[8],ans;//7种字符,1下标开8个足够了; char s[100005];//100000的数据 int main() { scanf("%s",s+1);//读入 for(int i=1;s[i];i++)//当s[i]为''时,就停止循环; { if(s[i]=='B')word[1]++;//将需要的字符用word记录下来; if(s[i]=='u')word[2]++; if(s[i]=='l')word[3]++; if(s[i]=='b')word[4]++; if(s[i]=='a')word[5]++; if(s[i]=='s')word[6]++; if(s[i]=='r')word[7]++; } while(word[1]>0&&word[2]>1&&word[3]>0&&word[4]>0&&word[5]>1&&word[6]>0&&word[7]>0)//当至少有1个B,l,b,s,r;2个u,a时,循环执行。(超级长的判断……) { ans++;//计数器加一 word[1]--,word[2]-=2,word[3]--,word[4]--,word[5]-=2,word[6]--,word[7]--;//将已经组成的字符减掉 } printf("%d\n",ans);//轻松的输出答案~ return 0;//愉快的结束~ } ``` # 打字这么累,不点个赞再走吗? ###### 求通过,求通过,求通过。。。