CSP历年复赛题-P1042 [NOIP2003 普及组] 乒乓球
原题链接:https://www.luogu.com.cn/problem/P1042
题意解读:
分别针对11分制和21分制,输出每局比分。只需要判断一局的结束条件:得分高者如果达到11或者21,且比分间隔大于等于2分,则表示一局结束,
可开始下一局,用模拟法即可解决。
100分代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 2505;
string all;
int cnt;
int scores[2] = {11, 21};
int main()
{
// 先将全部字符串读入all中
string line;
while(getline(cin, line)) all += line;
// 针对11分、21分制分别处理
for(int i = 0; i < 2; i++)
{
int score = scores[i];
int w = 0, l = 0; // 比分初始值
for(int j = 0; j < all.size(); j++)
{
if(all[j] == 'W') w++; // 华华得分
else if(all[j] == 'L') l++; // 对手得分
else if(all[j] == 'E') break; // 比赛结束
//如果得分超过11或者21,且比分间隔>=2,表示一局结束,输出比分
if(max(w, l) >= score && abs(w - l) >= 2)
{
cout << w << ":" << l << endl;
w = l = 0;
}
}
// 如果一局比赛未结束,也要输出本局比分
cout << w << ":" << l << endl;
//11分制和21分制之间有换行
if(i == 0) cout << endl;
}
return 0;
}
分类:
CSP-J复赛真题解析
标签:
模拟法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?