有一个罐子,里面装着红的、绿的、蓝的玻璃珠若干,分别用R、G、B表示。希望把它们排成一行,并且按照字典序排列(即B ->G -> R的顺序) .然后以一红二绿三蓝为一组串成一-串幸运珠,多余的放回罐子里,那么他能串成多少串幸运珠呢?
输入格式
输入为一行,是一个由若干个R、G、B乱序组
成的字符串,长度小于10000,每个字母至少出现一次。
输出格式
●输出共2行;
●第1行是排序完成后的字符串; .
●第2行是一个整数,为串成的幸运珠的数目。
样例输入
RGGBBB
样例输出
BBBGGR
1
思路:对字符串进行升序排序,然后分别记录R G B 的个数,寻找最小的限制量进行输出
提示:<algorithm>头文件里面包含min函数,可以直接使用
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
char s[10005];
int main()
{
int len,r,g,b;
cin>>s;
len=strlen(s);
sort(s,s+len);
cout<<s<<endl;
r=0;
g=0;
b=0;
for(int i=0;i<len;i++)
{
if(s[i]=='R')
{
r++;
}else if(s[i]=='G')
{
g++;
}else {
b++;}
}
cout<<min(r,min(g/2,b/3));//一个min函数只能放进两个参数
return 0;
}