PAT B 1018. 锤子剪刀布

我纠结在如何判断B,J,C的大小……想了好多好多情况……但觉得没必要写那么多判断……所以去板蓝根大神的解题思路里发现原来可以这样判断(我脑子不灵光喂……谢谢板神~)我的算法大体思路是借用一个二维数组储存甲和乙每次出的手势(借用ascii码储存),然后直接得出每种情况的个数.加油!

#include<stdio.h>
char jud(int B,int J,int C)
{
    int te=0,r=J;
    if(J<=C)
    {te=1;r=C;}
    if(r<=B)te=2;
    if(te==0)return 'J';
    if(te==1)return 'C';
    if(te==2)return 'B';
}
main()
{
    char JF,YF;//甲方乙方的ascii;
    int res['Z'+1]['Z'+1]={0},n,cnt=0;//甲方为行,乙方为列;
    int YF_J,YF_B,YF_C,JF_J,JF_B,JF_C;
    scanf("%d",&n);
    while(n!=0&&scanf("\n%c %c",&JF,&YF)!=EOF)//\n用来接受上一次循环以及开始循环之前缓存区内的回车
    {
        res[JF][YF]++;cnt++;if(cnt==n)break;
    }
    printf("%d %d %d\n",(res['B']['C']+res['J']['B']+res['C']['J']),(res['B']['B']+res['J']['J']+res['C']['C']),(res['B']['J']+res['C']['B']+res['J']['C']));
    printf("%d %d %d\n",(res['B']['J']+res['C']['B']+res['J']['C']),(res['B']['B']+res['J']['J']+res['C']['C']),(res['B']['C']+res['J']['B']+res['C']['J']));
    YF_J=res['B']['J'];YF_B=res['C']['B'];YF_C=res['J']['C'];
    JF_J=res['J']['B'];JF_B=res['B']['C'];JF_C=res['C']['J'];//为了不使判断显得麻烦,直接赋值.
    printf("%c",jud(JF_B,JF_J,JF_C));
    printf(" %c",jud(YF_B,YF_J,YF_C));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值