萌新题解~
_Cloud_
2020-01-13 20:21:54
题目叙述简化一下:就是一个字符串任意组合,有多少个“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;//愉快的结束~
}
```
# 打字这么累,不点个赞再走吗?
###### 求通过,求通过,求通过。。。