乒乓球(洛谷-P1042)
題目背景
國際乒聯現在主席沙拉拉自從上任以來就立志于推行一系列改革,以推動乒乓球運動在全球的普及。其中11分制改革引起了很大的爭議,有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位,他退役之后走上了乒乓球研究工作,意圖弄明白11分制和21分制對選手的不同影響。在開展他的研究之前,他首先需要對他多年比賽的統計數據進行一些分析,所以需要你的幫忙。
題目描述
華華通過以下方式進行分析,首先將比賽每個球的勝負列成一張表,然后分別計算在11分制和21分制下,雙方的比賽結果(截至記錄末尾)。
比如現在有這么一份記錄,(其中W表示華華獲得一分,L表示華華對手獲得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在11分制下,此時比賽的結果是華華第一局11比0獲勝,第二局11比0獲勝,正在進行第三局,當前比分1比1。而在21分制下,此時比賽結果是華華第一局21比0獲勝,正在進行第二局,比分2比1。如果一局比賽剛開始,則此時比分為0比0。直到分差大于或者等于2,才一局結束。
你的程序就是要對于一系列比賽信息的輸入(WL形式),輸出正確的結果。
輸入輸出格式
輸入格式:
包含若干行字符串(每行至多20個字母),字符串有大寫的W、L和E組成。其中E表示比賽信息結束,程序應該忽略E之后的所有內容。
輸出格式:
輸出由兩部分組成,每部分有若干行,每一行對應一局比賽的比分(按比賽信息輸入順序)。其中第一部分是11分制下的結果,第二部分是21分制下的結果,兩部分之間由一個空行分隔。
輸入輸出樣例
輸入樣例#1:
WWWWWWWWWWWWWWWWWWWW
WWLWE
輸出樣例#1:
11:0
11:0
1:1
21:0
2:1
思路:一邊讀入數據一邊存儲21制下的積分并輸出11制下的積分,最后輸出21制下的積分即可,注意數據讀入時用scanf
源代碼
#include<iostream> #include<cstdio> using namespace std; int work[10000][2]; int main() {char k;int W11=0,L11=0,W21=0,L21=0;int flag=0;int i;while(scanf("%c",&k)){if(k=='E')break;if(k=='L'){L11++;//記錄11制下的LL21++;//記錄21制下的L}if(k=='W'){W11++;//記錄11制下的WW21++;//記錄21制下的W}if((W11>=11&&W11-L11>=2)||(L11>=11&&L11-W11>=2))//輸出11制{cout<<W11<<":"<<L11<<endl;L11=0;//歸零W11=0;//歸零}if((W21>=21&&W21-L21>=2)||(L21>=21&&L21-W21>=2))//記錄21制{work[flag][1]=L21;//記錄21制下的Lwork[flag][0]=W21;//記錄21制下的WL21=0;//歸零W21=0;//歸零flag++;}}cout<<W11<<":"<<L11<<endl<<endl;for(i=0;i<flag;i++)//輸出21制cout<<work[i][0]<<":"<<work[i][1]<<endl;cout<<W21<<":"<<L21<<endl;return 0; }?
總結
以上是生活随笔為你收集整理的乒乓球(洛谷-P1042)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛C++语言:切蛋糕
- 下一篇: 年龄与疾病(信息学奥赛一本通-T1106