zoukankan      html  css  js  c++  java
  • 201793模拟赛T1 卡片(card)

     题目


     【题目描述】

    lrb 喜欢玩卡牌。他手上现在有n张牌,每张牌的颜色为红绿蓝中的一种。现在他有两种操作。一是可以将两张任意位置的不同色的牌换成一张第三种颜色的牌;二是可以将任意位置的两张相同颜色的牌换成一张该颜色的牌。两个操作后都可以将生成的牌放到任意位置。现在他想知道,最后一张牌可能是什么颜色的。

    【输入描述】

    第一入一个n,表示卡牌数量。
    第二行输入一个由’B’,’G’,’R’组成的长度为n的字符串,分别表示卡牌的颜色为蓝色、绿
    色、红色中的一种。
    【输出描述】
    输出’B’,’G’,’R’中的若干个字母,按字典序输出。代表可能的最后一张牌的颜色。
    【样例】

    【数据范围】

    对于100%的数据,n ≤ 200

    题解


    显然牌的顺序不会对答案造成影响,故记录每种牌出现的次数。

    分几种情况讨论。

    1.只有一种牌,答案就是这种牌。

    2.有两种牌,这需要分情况讨论。设这两种牌的数量为A,B,剩下一种为C.(为方便讨论,A<=B)

    a.A=B=1.显然结果为剩下那种牌。

    b.A=1,B>1.这时可以通过操作2转换为a情况,也可以把A,B各一张换成C,这样结果也有可能是A。但显然A的数量最多为1,因此不可能剩下一张B(可以证明)。

    c.A,B>1.此时,可以把A,B各一张转化为C,再利用操作2使A,B,C都只剩下1张。显然此时最后可能的牌三种都有可能。

    3.有三种牌。这种情况同样可以转化成三种牌各剩一张,因此最后三种都有可能。

    这题需要一堆if,编程复杂度较高。下面贴出一种做法,不保证写法最优。

    -----------------我是分割线-----------------

     1 #define FileIO(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout);
     2 #include <stdio.h>
     3 #define R 1
     4 #define G 2
     5 #define B 4
     6 #define check1(a,b,c,A,B,C) if(!a&&b==1) return A|(c>1?B:0);
     7 int n,r,g,b;
     8 char solve(int r,int g,int b) {
     9     if(!r&&!g) return B;
    10     if(!r&&!b) return G;
    11     if(!g&&!b) return R;
    12     check1(r,g,b,R,G,B);
    13     check1(r,b,g,R,B,G);
    14     check1(g,r,b,G,R,B);
    15     check1(g,b,r,G,B,R);
    16     check1(b,r,g,B,R,G);
    17     check1(b,g,r,B,G,R);
    18     return R|G|B;
    19 }
    20 int main() {
    21     FileIO("card");
    22     char c;
    23     scanf("%d",&n);
    24     for(int i=0;i<n;++i) {
    25         scanf(" %c",&c);
    26         ++(c=='R'?r:c=='G'?g:b);
    27     }
    28     c=solve(r,g,b);
    29     if(c&B) putchar('B');
    30     if(c&G) putchar('G');
    31     if(c&R) putchar('R');
    32     return 0;
    33 }
    偷看一眼代码

    完结撒花+%czhou~~~

  • 相关阅读:
    判断一个字符串之中出现次数最多的字符和它出现的次数
    冒泡排序
    vue 页面生成图片保存
    css实现0.5像素的底边框。
    web之面试常问问题:如何实现水平垂直居中?
    cocos 向左滚动公告
    SpringBoot 访问jsp文件报错Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/welcome.jsp]的解决办法
    vue 弹窗禁止底层滚动
    vue 倒计时 iOS无效
    axios之增删查改操作
  • 原文地址:https://www.cnblogs.com/hotwords/p/7475764.html
Copyright © 2011-2022 走看看