1018 錘子剪刀布 (20 分)

大家應(yīng)該都會(huì)玩“錘子剪刀布”的游戲:兩人同時(shí)給出手勢(shì),勝負(fù)規(guī)則如圖所示:

錘子剪刀布

現(xiàn)給出兩人的交鋒記錄,請(qǐng)統(tǒng)計(jì)雙方的勝、平、負(fù)次數(shù),并且給出雙方分別出什么手勢(shì)的勝算最大。

輸入格式:

輸入第 1 行給出正整數(shù) N(≤105??),即雙方交鋒的次數(shù)。隨后 N 行,每行給出一次交鋒的信息,即甲、乙雙方同時(shí)給出的的手勢(shì)。C 代表“錘子”、J 代表“剪刀”、B 代表“布”,第 1 個(gè)字母代表甲方,第 2 個(gè)代表乙方,中間有 1 個(gè)空格。

輸出格式:

輸出第 1、2 行分別給出甲、乙的勝、平、負(fù)次數(shù),數(shù)字間以 1 個(gè)空格分隔。第 3 行給出兩個(gè)字母,分別代表甲、乙獲勝次數(shù)最多的手勢(shì),中間有 1 個(gè)空格。如果解不唯一,則輸出按字母序最小的解。

輸入樣例:
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J

輸出樣例:
5 3 2
2 3 5
B B

代碼:(有點(diǎn)長(zhǎng),可以改成更好的)

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

struct game{//結(jié)構(gòu)體 
    int Cwin,Jwin,Bwin;
    int win,fail,ping;
    game(){//OK
     Cwin=0;//用錘子贏了 
     Jwin=0;//用剪刀贏了 
     Bwin=0;//用布贏了 
     win=0;//贏的次數(shù) 
     fail=0;//輸?shù)拇螖?shù) 
     ping=0;//平局的次數(shù) 
    }
};

char findmax(game a){//找到獲勝最多的姿勢(shì),這里注意字母順序B C J 
    int x=a.Bwin;//先讓X初始化為B的數(shù)值 
    char output='B';//先讓輸出初始化為B 
    if(x<a.Cwin){//如果小于C就用C的替換 
        x=a.Cwin; 
        output='C';
    }
//如果B的值大于等于C的值那就不變,大于等于包括了等于
//因?yàn)锽在C的字母序前面所以不產(chǎn)生任何改變所以這里不用寫(xiě)else 
//下面這個(gè)判斷同理
    if(x<a.Jwin){
        x=a.Jwin; 
        output='J';
    }
    return output;
}

int main(){
    int n;
    char l,r;
    game jia,yi;//生命 甲 乙 兩個(gè)結(jié)構(gòu)體變量 
    scanf("%d",&n);
    for(int i=0;i<n;i++){//ok
        
        getchar();//用getchar()吸收回車(chē) 
        scanf("%c %c",&l,&r);//讀取兩個(gè)字母 
        if(l=='C'){//如果甲出錘子 
        
            if     (r=='C') {//乙出錘子 
                jia.ping ++;
                yi.ping ++;
            }
            else if(r=='J'){//乙出剪刀 
                jia.win ++;
                yi.fail ++;
                jia.Cwin ++;
            }
            else if(r=='B'){//乙出布 
                yi.win ++;
                jia.fail ++;
                yi.Bwin ++;
            }
        }
        else if(l=='J'){//如果甲出剪刀
        
            if     (r=='C'){//乙出錘子
                yi.win ++;
                jia.fail ++;
                yi.Cwin ++;
            }
            else if(r=='J'){//乙出剪刀 
                jia.ping ++;
                yi.ping ++;
            }
            else if(r=='B'){//乙出布 
                jia.win ++;
                yi.fail ++;
                jia.Jwin ++;
            }
        }
        else if(l=='B'){//如果甲出布
        
            if     (r=='C'){//乙出錘子
                jia.win ++;
                yi.fail ++;
                jia.Bwin ++;
            }
            else if(r=='J'){//乙出剪刀 
                yi.win ++;
                jia.fail ++;
                yi.Jwin ++;
            }
            else if(r=='B'){//乙出布 
                jia.ping ++;
                yi.ping ++;
            }
        }
    }
    printf("%d %d %d\n",jia.win ,jia.ping ,jia.fail );//輸出甲的成績(jī) 
    printf("%d %d %d\n",yi.win ,yi.ping ,yi.fail );//輸出乙的成績(jī) 
    printf("%c %c",findmax(jia),findmax(yi));//輸出甲乙獲勝最多的姿勢(shì) 
    return 0;   
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容