P1042 乒乓球(模拟 细节 坑爹)

题目链接: P1042 乒乓球
题解: 输入一个判断一个,累计W 和 L 的数据,11制要保证在有人达到11分的情况下两者分差大于等于2才行;21分制一样;即可以这样写:(两种都对)
		if((W >= 11 && W - L >= 2) || (L >= 11 && L - W >= 2))
        if((W >= 11 || L >= 11) && abs(W - L) >= 2)
进入后if后将二者清零,继续后续累计;关键点:最后比分若为0 :0也得输出;
坑爹的点:
  • 输出时可以cin,也可以getchar,但是一定要注意空格处理,我就是getchar然后直接判断:
	if(s == 'W') W++, w++;
    else L++, l++;

这样就是错的,L和l已经把空格也计算进去了,哭!!!!;应该用两个if;

  • 最后若为0 : 0 也得输出,题目并没有说,但的确得输出。。。。血与泪的尝试后发现的!!!
  • 保存结果的数组要开大,不然又会出问题,血与泪的尝试后发现的!!!。。。每行25,2500行,大概11制下结果最多也要有5000多组吧,我开的3000的数组,。。哭!!!
参考代码: 坑爹题!!!
#include <string>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;

char s;
int W, L, w, l, i, j;
int a[10000], b[10000], c[10000], d[10000];

int main()
{
    while((s = getchar()) != 'E')
    //while(cin >> s && s != 'E')
    {
        if(s == 'W') W++, w++;
        //else L++, l++;
        if(s == 'L') L++, l++;

        //if((W >= 11 && W - L >= 2) || (L >= 11 && L - W >= 2))
        if((W >= 11 || L >= 11) && abs(W - L) >= 2)
        {
            a[i] = W; b[i] = L;
            W = 0; L = 0; i++;
        }
        if((w >= 21 || l >= 21) && abs(w - l) >= 2)
        //if((w >= 21 && w - l >= 2) || (l >= 21 && l - w >= 2))
        {
            c[j] = w; d[j] = l;
            w = l = 0; j++;
        }
    }

//    if(W||L) a[i] = W, b[i] = L, i++;
//    if(w||l) c[j] = w, d[j] = l, j++;

    for(int k = 0; k < i; k++) cout << a[k] <<":"<< b[k] << endl;
    cout << W <<":"<< L << endl;
    cout << endl;
    for(int k = 0; k < j; k++) cout << c[k] <<":"<< d[k] << endl;
    cout << w <<":"<< l << endl;
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值