B1018:锤子剪刀布(20')

思路:每次输入进行比较。甲负的次数就是乙赢的次数,不用额外记录。最后输出甲乙获胜最多的手势,因为要考虑解不唯一,所以我采用把结果枚举。按字典序,J次数必须大于B和C,C次数必须大于B,可以大于等于B,B大于等于B、J就行。

注意:scanf会把'\n'读入,所以可能输入五组数据,就跳出结果了,要用getchar()来吸收。另外,判断要用if-else,不能用多个if,而没有else,这样会记录次数出现错误。

代码:

#include<cstdio>
int main(){
    int n,count1,count2,count3,c1,j1,b1,c2,j2,b2,i;
    count1=count2=count3=c1=j1=b1=c2=j2=b2=0;
    scanf("%d",&n);
    char a[n][2];
    for(i=0;i<n;i++){
        getchar();  //scanf会把\n换行符读入,所以用getchar吸收\n
        scanf("%c %c",&a[i][0],&a[i][1]);
        if(a[i][0]=='C'&&a[i][1]=='J'){
            count1++;  //甲赢一次
            c1++;  //甲锤子赢一次
        }
        else if(a[i][0]=='C'&&a[i][1]=='B'){
            count2++;
            b2++;
        }
        else if(a[i][0]=='J'&&a[i][1]=='C'){
            count2++;
            c2++;
        }
        else if(a[i][0]=='J'&&a[i][1]=='B'){
            count1++;
            j1++;
        }
        else if(a[i][0]=='B'&&a[i][1]=='C'){
            count1++;
            b1++;
        }
        else if(a[i][0]=='B'&&a[i][1]=='J'){
            count2++;
            j2++;
        }
        else count3++;
    }
    printf("%d %d %d\n",count1,count3,count2);  //甲负即乙赢
    printf("%d %d %d\n",count2,count3,count1);
    if(j1>c1&&j1>b1) printf("J ");
    if(b1>=c1&&b1>=j1) printf("B ");
    if(c1>b1&&c1>=j1) printf("C ");
    if(j2>c2&&j2>b2) printf("J");
    if(b2>=c2&&b2>=j2) printf("B");
    if(c2>b2&&c2>=j2) printf("C");
    return 0;
}

二刷代码:

#include<stdio.h>
int main(){
    int N;
    char jia,yi;
    int AS,AE,AF,count1c,count1j,count1b,count2c,count2j,count2b;  //甲胜、甲平、甲负
    AS = AE = AF = count1c = count1j = count1b = count2c = count2j = count2b = 0;
    scanf("%d",&N);
    for(int i = 0;i < N;i ++){
        getchar();
        scanf("%c %c",&jia,&yi);
        if(jia == 'C' && yi == 'J'){
            AS++;
            count1c++;  //只要记录赢的时候的手势,看清题目
        }
        else if(jia == 'C' && yi == 'B'){
            AF++;
            count2b++;
        }
        else if(jia == 'C' && yi == 'C'){
            AE++;
        }
        else if(jia == 'B' && yi == 'B'){
            AE++;
        }
        else if(jia == 'B' && yi == 'C'){
            AS++;
            count1b++;
        }
        else if(jia == 'B' && yi == 'J'){
            AF++;
            count2j++;
        }
        else if(jia == 'J' && yi == 'B'){
            AS++;
            count1j++;
        }
        else if(jia == 'J' && yi == 'C'){
            AF++;
            count2c++;
        }
        else{
            AE++;
        }
    }
    printf("%d %d %d\n",AS,AE,AF);
    printf("%d %d %d\n",AF,AE,AS);
    if(count1b >= count1c && count1b >= count1j){
        printf("B ");
    }
    else if(count1c > count1b && count1c >= count1j){  //结果相同,按字典序输出
        printf("C ");
    }
    else if(count1j > count1b && count1j > count1c){
        printf("J ");
    }
    if(count2c > count2b && count2c >= count2j){
        printf("C");
    }
    else if(count2b >= count2c && count2b >= count2j){
        printf("B");
    }
    else if(count2j > count2b && count2j > count2c){
        printf("J");
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
全部评论

相关推荐

避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务