乒乓球乒乓

题目名字

乒乓球

题意

每个球的胜负用"W"表示华华获得一分,"L"表示对手获得一分。程序需要根据这些信息,分别计算在11分制和21分制下,双方的比赛结果。

思路

  1. 首先,它定义了一个字符数组str和一个整数变量cnt,用于存储输入的比赛结果和记录比赛结果的数量。
  2. 然后,定义了一个名为show的函数,该函数接受一个整数n作为参数。在函数内部,使用变量a和b来记录"W"和"L"的数量,并使用for循环遍历存储的比赛结果。如果a或b的数量达到n,并且它们的绝对差值大于等于2,就输出当前的比分并将a和b重置为0。最后输出最终的比分。
  3. 在主函数main中,使用while循环不断读取输入的字符,直到输入的字符为’E’为止。如果输入的字符是’W’或者’L’,就将其存储到数组str中。然后调用show函数两次,分别传入参数11和21,以展示不同阶段的比分。

坑点

  1. 未处理平局情况:在show函数中,只处理了当某一方得分达到n并且绝对差值大于等于2时输出比分,但是没有处理平局的情况,即a和b的差值小于2的情况。

算法一:模拟和计数

  1. 在主函数中,通过循环读取输入的比赛结果,并将其存储到数组中。这部分属于模拟,模拟了比赛过程中的输入和存储。
  2. 在show函数中,使用了计数的方法来统计"W"和"L"的数量,并且在特定条件下输出比分。这部分属于计数,通过统计得分的数量和条件判断来输出比分。
实现步骤
  1. 首先,它定义了一个字符数组str和一个整数变量cnt,用于存储输入的比赛结果和记录比赛结果的数量。
  2. 然后,定义了一个名为show的函数,该函数接受一个整数n作为参数。在函数内部,使用变量a和b来记录"W"和"L"的数量,并使用for循环遍历存储的比赛结果。如果a或b的数量达到n,并且它们的绝对差值大于等于2,就输出当前的比分并将a和b重置为0。最后输出最终的比分。
  3. 在主函数main中,使用while循环不断读取输入的字符,直到输入的字符为’E’为止。如果输入的字符是’W’或者’L’,就将其存储到数组str中。然后调用show函数两次,分别传入参数11和21,以展示不同阶段的比分。
代码
#include<iostream>
#include<cmath>
using namespace std;

char str[100010];
int cnt=0;

void show(int n){
    int a=0,b=0;
    for(int i=0;i<cnt;i++){
        if(str[i]=='W') a++;
        if(str[i]=='L') b++;

        if((a>=n||b>=n)&&abs(a-b)>=2){
            cout<<a<<":"<<b<<endl;
            a=b=0;
        }
    }
    cout<<a<<":"<<b<<endl;
}

int main(){
    char ch;

    while(cin>>ch&&ch!='E'){
        if(ch=='W'||ch=='L'){
          str[cnt++]=ch;
        }
    }

    show(11);
    cout<<endl;
    show(21);
} 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值