当前位置:网站首页>一本通1922——乒乓球
一本通1922——乒乓球
2022-07-30 02:46:00 【竹林居士-】
题目
原题链接
http://ybt.ssoier.cn:8088/problem_show.php?pid=1922
【题目描述】
国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。
【输入】
每个输入包含若干行字符串(每行至多20个字母),字符串有大写的W、L和E组成。其中E表示比赛信息结束,程序应该忽略E之后的所有内容。
【输出】
输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。
【输入样例】
WWWWWWWWWWWWWWWWWWWW
WWLWE【输出样例】
11:0
11:0
1:1
21:0
2:1审题
这题因为不清楚记录的数量,因此要用到可变数组 (vector)
vector的定义方式与栈、队列类似。用法和数组很相似,只不过长度不需要再自己定义。
W代表华华得分,L表示对手得分。只需累加即可。
步骤
1.定义变量和可变数组
vector<char>a;
char t;2.定义一个函数来轮流输出11分制和21分制
void f(int x)//要算x分制
{
int n=0,m=0;//双方的成绩
for(int i=0;i<a.size();i++)
{
if(a[i]=='W')
{
n+=1;//如果是W,让华华的分数+1
}
if(a[i]=='L')
{
m+=1;//如果是L,让对手的分数+1
}
if((n>=x&&n-m>=2)||(m>=x&&m-n>=2))//如果有一方成绩大于x且高于对手两分,输出
{
cout<<n<<":"<<m<<endl;
n=0;//分数归零
m=0;
}
}
cout<<n<<":"<<m<<endl;
n=0;
m=0;
}3.主函数
int main()
{
while(1)//重复输入
{
cin>>t;
if(a.size()==0&&t=='E')如果还没记录就为E,直接输出0:0
{
cout<<"0:0"<<endl;
cout<<endl;
cout<<"0:0"<<endl;
return 0;
}
if(t=='E')//如果记录不为空,但当前为E,退出循环
{
break;
}
a.push_back(t);//否则将t放入可变数组a
}
f(11);//11分制
cout<<endl;
f(21);//21分制
}完整代码
#include<iostream>
#include<vector>
using namespace std;
vector<char>a;
char t;
void f(int x)//要算x分制
{
int n=0,m=0;//双方的成绩
for(int i=0;i<a.size();i++)
{
if(a[i]=='W')
{
n+=1;//如果是W,让华华的分数+1
}
if(a[i]=='L')
{
m+=1;//如果是L,让对手的分数+1
}
if((n>=x&&n-m>=2)||(m>=x&&m-n>=2))//如果有一方成绩大于x且高于对手两分,输出
{
cout<<n<<":"<<m<<endl;
n=0;//分数归零
m=0;
}
}
cout<<n<<":"<<m<<endl;
n=0;
m=0;
}
int main()
{
while(1)//重复输入
{
cin>>t;
if(a.size()==0&&t=='E')如果还没记录就为E,直接输出0:0
{
cout<<"0:0"<<endl;
cout<<endl;
cout<<"0:0"<<endl;
return 0;
}
if(t=='E')//如果记录不为空,但当前为E,退出循环
{
break;
}
a.push_back(t);//否则将t放入可变数组a
}
f(11);//11分制
cout<<endl;
f(21);//21分制
}新手,请多指教
边栏推荐
猜你喜欢

测试/开发程序员面试该如何谈薪资待遇呢?突破这个坎......

A transaction is in Mysql?What's the use?

实现导入市场活动:

win11 自带远程桌面使用(包含非局域网使用以及win11升级为专业版)

The box office broke 790 million US dollars. Have you watched this recent dinosaur movie?

JS history.back() go(-1) Location 跳转 重新加载页面 get请求 返回顶部 bom

1050 graphics card, why is the graphics card usage ranking on Steam always the top five

Mysql中事务是什么?有什么用?

AI落地难?云原生助力企业快速应用机器学习 MLOps

奥比中光高级副总裁王兆民离职 董事会秘书暂未取得资格证
随机推荐
JS Bom location 楼层导航效果 offsetTop data-n 方括号选择器
EL 表达式
Embedded SIG | 分布式软总线
JNPF3.4.2系统升级公告
HCIP 第十五天
go grpc custom interceptor
The box office broke 790 million US dollars. Have you watched this recent dinosaur movie?
ESP8266 +0.96“ I2C OLED 表盘时钟
华宝新能通过注册:拟募资近7亿 营收增加利润反而下降
nrm ls 为什么前面不带 *了
黑客动态播报 | 一封假offer,盗取6.25亿美元
Hacker News Broadcast | A fake offer steals $625 million
English grammar_indefinite pronouns -some & any
WebSocket在线通信
go jwt use
STM32L4R9ZIY6PTR STM32L4高性能嵌入式—MCU
机器学习(十五)异常检测
快速入门jsp
B. Inflation-Educational Codeforces Round 103 (Rated for Div. 2)
go bidirectional streaming mode