CodeForces-626B-Cards

给一个数n,然后一个长度为n的字符串,有三种颜色,R代表红,G代表绿,B代表蓝色,然后有两种操作,两个相同的颜色可以换成一个新的相同的颜色,两个不同的颜色可以换成另一个不同的颜色,然后问你这个字符串有多少种不同的情况。按字典序输出。


题目bb一大堆,一开始各种乱想,不知道怎么做,各种方法想了出来,结果发现都gg,最后发现这特么就是一sabi题嘛,无论如何结果最多就是三个BGR。然后,暴力模拟就好了

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;

char s[205];
int r,b,g;

void init()
{
    r=0,b=0,g=0;
}

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        init();
        scanf("%s",s);
        for(int i=0;i<n;i++)
        {
            if(s[i]=='R') r++;
            else if(s[i]=='B') b++;
            else if(s[i]=='G') g++;
        }
       // printf("%d %d %d\n",r,b,g);
       if(r==1&&b==1&&g==0) printf("G\n");
       else if(r==1&&g==1&&b==0) printf("B\n");
       else if(b==1&&g==1&&r==0) printf("R\n");
       else if(r==1&&b>1&&g==0) printf("GR\n");
       else if(b==1&&r>1&&g==0) printf("BG\n");
       else if(b==1&&g>1&&r==0) printf("BR\n");
       else if(g==1&&b>1&&r==0) printf("GR\n");
       else if(r==1&&g>1&&b==0) printf("BR\n");
       else if(g==1&&r>1&&b==0) printf("BG\n");
       else if(g>=1&&r>=1&&g>=1) printf("BGR\n");
       else if(b>=1&&r>=1&&g==0) printf("BGR\n");
       else if(g>=1&&b>=1&&r==0) printf("BGR\n");
       else if(g>=1&&r>=1&&b==0) printf("BGR\n");
       else if(b>=1&&g==0&&r==0) printf("B\n");
       else if(r>=1&&b==0&&g==0) printf("R\n");
       else if(g>=1&&b==0&&r==0) printf("G\n");
    }
    return 0;
}


你可能感兴趣的:(模拟)