日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

pat 乙级 1018 锤子剪刀布(C++)

發(fā)布時(shí)間:2023/12/2 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pat 乙级 1018 锤子剪刀布(C++) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目

兩人玩錘子剪刀布,現(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

分析

  • 求解雙方勝、負(fù)、平次數(shù),只需每次輸入數(shù)據(jù)時(shí)進(jìn)行判斷然后累加即可,注意一人勝另一人負(fù)。
  • 求解雙方勝利次數(shù)最多的手勢(shì),且如果解不唯一,選擇字母序小的。可用數(shù)組下標(biāo)來(lái)順序?qū)?yīng)B、C、J來(lái)解決。
  • 可使用一個(gè)結(jié)構(gòu)體來(lái)存儲(chǔ),成員包括victory,draw,defeat,count[3]。聲明兩個(gè)結(jié)構(gòu)體變量時(shí),聲明為全局變量。這樣編譯器會(huì)將變量初始化,不用再自己另外再初始化。

AC代碼

#include<iostream> using namespace std; struct node {int count[3];int victory,draw,defeat; }A,B; int game(char A,char B) {if(A==B)return 0;else if((A=='C'&&B=='J')||(A=='B'&&B=='C')||(A=='J'&&B=='B'))return 1;elsereturn 2; }int main() {int i,N;char ch1,ch2; cin>>N;for(i=0;i<N;i++){cin>>ch1>>ch2;int temp=game(ch1,ch2);if(temp==0){A.draw++;B.draw++;}else if(temp==1){A.victory++;B.defeat++; if(ch1=='B')A.count[0]++; else if(ch1=='C')A.count[1]++;elseA.count[2]++;}else{B.victory++;A.defeat++;if(ch2=='B')B.count[0]++; else if(ch2=='C')B.count[1]++;elseB.count[2]++;}}cout<<A.victory<<" "<<A.draw<<" "<<A.defeat<<endl;cout<<B.victory<<" "<<B.draw<<" "<<B.defeat<<endl;int max_A=A.count[0],max_B=B.count[0],flag1=0,flag2=0;for(i=1;i<3;i++){if(A.count[i]>max_A){max_A=A.count[i];flag1=i; }if(B.count[i]>max_B){max_B=B.count[i];flag2=i; } }if(flag1==0) cout<<"B ";else if(flag1==1)cout<<"C ";elsecout<<"J ";if(flag2==0) cout<<"B";else if(flag2==1)cout<<"C";elsecout<<"J";return 0; }

如果小伙伴有任何問(wèn)題或者建議,歡迎評(píng)論區(qū)留言或者私信博主哦

更多題解
pat 乙級(jí) 題解匯總(持續(xù)更新)(C++)

總結(jié)

以上是生活随笔為你收集整理的pat 乙级 1018 锤子剪刀布(C++)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。