洛谷 P1042 [NOIP2003 普及组] 乒乓球

题目链接

题目大意

乒乓球分为 11 分制和 21 分制,当其中一方分数大于等于11(11分制)或者21(21分制)并且大于等于另一方分数2分时比赛结束。输入一串字符串,有W,L,E组成,W表示华华拿一分,L表示华华对手拿一分,E表示比赛结束。

题目思路

这是一道模拟题,这里讲一下细节就可以。

  1. 其中一方分数 s c o r e > = 11 且 a b s ( 分数差 ) > = 2 score>=11 且 abs(分数差) >= 2 score>=11abs(分数差)>=2
  2. 0:0也要输出
  3. 输出格式:第一部分是 1111 分制下的结果,第二部分是 2121 分制下的结果,两部分之间由一个空行分隔。

输入与输出

输入

WWWWWWWWWWWWWWWWWWWW
WWLWE

输出

11:0
11:0
1:1

21:0
2:1

AC代码

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>	
#include<math.h>
#include<list>
#include<stack>

using namespace std;

struct R
{
	int ll, rr;
}R1[10005],R2[10005];

int main(int argc, char* argv[])
{
	string s;
	int l1 = 0, l2 = 0, r1 = 0, r2 = 0;
	int c1 = 0, c2 = 0;
	while (cin >> s)
	{
		int len = s.length();
		int i;
		for (i = 0; i < len; ++i)
		{
			if (s[i] == 'W')
			{
				l1++; l2++;
			}
			else if (s[i] == 'L')
			{
				r1++; r2++;
			}
			else break;
			//分差大于或者等于 2
			if ((l1 >= 11 || r1 >= 11) && abs(l1 - r1) >= 2)
			{
				R1[c1].ll = l1;
				R1[c1].rr = r1;
				c1++;
				l1 = r1 = 0;
			}
			if ((l2 >= 21 || r2 >= 21) && abs(l2 - r2) >= 2)
			{
				R2[c2].ll = l2;
				R2[c2].rr = r2;
				c2++;
				l2 = r2 = 0;
			}
		}
		if (s[i] == 'E')
		{
			R1[c1].ll = l1;
			R1[c1].rr = r1;
			c1++;
			

			R2[c2].ll = l2;
			R2[c2].rr = r2;
			c2++;
			break;
		}
	}
	for (int i = 0; i < c1; ++i)
	{
		printf("%d:%d\n", R1[i].ll, R1[i].rr);
	}
	printf("\n");
	for (int i = 0; i < c2; ++i)
	{
		printf("%d:%d\n", R2[i].ll, R2[i].rr);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值