洛谷P1042 乒乓球

本文介绍了一种基于C++的乒乓球比赛计分系统实现方案,通过数组记录比赛过程中的得分情况,当满足特定条件时更新选手得分。系统能够处理单局11分制和整场比赛21分制的比赛规则,最后输出每局和整场比赛的得分情况。

原题链接
思路:
用数组 W_11[i], L_11[i],W_21[j] , L_21[j] 去记录分数,但两人的比分满足条件,i或j+1;
代码:

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<set>
#include<list>
#include<queue>
#include<deque>
#include<unordered_map>
#include<map>
#include<string>
#include<cstring>
#include<stack>
#include<cmath>

#define vint vector<int>
#define vstr vector<string>
#define vll vector<long long>
#define ll long long
#define pf printf
#define sf scanf
#define sfd(n) scanf("%d", &n)
#define sfll(n) scanf("%lld", &n)
#define pfd(n) printf("%d", n)
#define pfll(n) printf("%lld", n)
#define pft	printf("\t")
#define pfn printf("\n")
#define pfk printf(" ")
#define PI 3.1415926
#define MAX 100000
#define M 100003

using namespace std;

int main() {
	char ch;
	int W_11[6000] = {0}, L_11[6000] = {0};
	int W_21[3000] = {0}, L_21[3000] = {0};
	int i = 0, j = 0;
	while( true ) {
		cin >> ch;
		if( ch=='E' ) {
			break;
		}
		if( ch=='W' ) {
			W_11[i]++;
			W_21[j]++;
		}else {
			L_11[i]++;
			L_21[j]++;
		}
		if( W_11[i]>=11 ) {
			if( W_11[i]-L_11[i]>=2 ) {
				i++;
			}
		}
		if( L_11[i]>=11 ) {
			if( L_11[i]-W_11[i]>=2 ) {
				i++;
			}
		}
		if( W_21[j]>=21 ) {
			if( W_21[j]-L_21[j]>=2 ) {
				j++;
			}
		}
		if( L_21[j]>=21 ) {
			if( L_21[j]-W_21[j]>=2 ) {
				j++;
			}
		}

	}
	for( int k=0; k<=i; k++ ) {
		cout << W_11[k] << ":" << L_11[k];
		pfn;
	}
	pfn;
	for( int p=0; p<=j; p++ ) {
		cout << W_21[p] << ":" << L_21[p];
		pfn;
	}
	pfn;
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值