A - 摆仙果

题目描述

Adrian, Bruno与Goran三人参加了仙界的宴会,宴会开始之前先准备了一些仙果供三人品尝,但是仙果的摆放有顺序要求,如果把仙果摆错了位置,仙果就会消失而无法品尝到。
由于三人是第一次来仙界,也不知道究竟是怎样的摆放方法,它们就按自己的想法摆放仙果。假设仙果种类共有3种,分别记为A,B,C,那么三人的摆放方法分别为
Adrian采用ABCABCABC...的排列方式
Bruno采用BABCBABCBABC...的排列方式
Goran采用CCAABBCCAABB...的排列方式
现在告诉你正确的仙果的摆放方式,请你算一下谁能吃到的仙果最多

数据输入

第1行有一个整数N,表示共有N个仙果。第2行有N个仅由ABC组成的字符,表示仙果正确的摆放位置。
1 ≤N≤100

数据输出

第1行输出一个整数,代表一个人最多有几个仙果摆放正确。接下来的行中,输出摆放仙果数最多的人名,若有多人都摆放对了最多数量的仙果,则按字典序在每行中输出1个名字。

解决方案

  1. 我的方案
#include
using namespace std;
char Ad[3]={'A','B','C'};
char Br[4]={'B','A','B','C'};
char Go[6]={'C','C','A','A','B','B'};
bool cmp(const pair& a, const pair& b){
    if(a.second == b.second) return a.firstb.second;
}
map c;
int main(){
    c['A']=c['B']=c['G']=0;
    int N;
    string R;
    cin>>N>>R;
    for(int i=0;i> vec(c.begin(),c.end());
    sort(vec.begin(),vec.end(),cmp);
    int biggest=vec[0].second;
    printf("%d\n",biggest);
    if(vec[0].first=='A')printf("Adrian");
    if(vec[0].first=='B')printf("Bruno");
    if(vec[0].first=='G')printf("Goran");
    for(int i=1;i

你可能感兴趣的:(A - 摆仙果)