P1042 [NOIP2003 普及组] 乒乓球

P1042 [NOIP2003 普及组] 乒乓球

考点:模拟、字符串

测评链接:P1042 [NOIP2003 普及组] 乒乓球

讲评视频:稍后上传

题意&分析

  • 根据题意模拟对接情况进行输出即可,分为 11 11 11 分制和 21 21 21 分制。
  • 输出一次对局情况,要满足的条件有 2 2 2,其中 n = 11 / 21 n=11/21 n=11/21
    1. 如果某一方得分达到 n n n 分。
    2. 双方的比分差值要大于等于 2 2 2

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 70000;
char ch[N];
int cnt; // 统计有效的比赛场次数量

void solve( int n ) {
	int w = 0, l = 0; // 声明并初始化比分情况
	for (int i = 1; i < cnt; i++)
	{
		if ( ch[i] == 'W' ) w++; // 统计当前局的比分
		else l++;

		if ( (w >= n || l >= n) && ( abs(w - l) >= 2 )  ) // 其中一方达到了 n 分,并且比分差值大于等于 2
		{
			cout << w << ":" << l << endl; // 比分情况
			w = l = 0; // 开始新一轮的比分统计
		}
	}
	cout << w << ":" << l << endl; // 最后一轮剩有的比分
}

int main() {
	// 循环读入
	while ( cin >> ch[++cnt] && ch[cnt] != 'E' );

	solve( 11 ); // 处理 11 分制
	cout << endl;
	solve( 21 ); // 处理 21 分制

	return 0;
}

对于题目有任何疑问,可以私信作者~

  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值