zhanghongyi152 2023-04-20 16:37 采纳率: 0%
浏览 2

1922:【03NOIP普及组】乒乓球

信息学奥赛一本通1922:【03NOIP普及组】乒乓球的详细解法以及思路
问题超时

//1922:乒乓球
#include<bits/stdc++.h>
using namespace std;
long long s=0;
int max=0;
int t=0;
char a[500000005];
long long win=0;
long long lost=0;
int print(long long x,long long y)
{
    printf("%d:%d\n",x,y);
}
int main(){
        int s=0;
        while(a[s] != 'E')
        {
            cin>>a[s];
            s++;
        }
        for(int i=0;i<s;i++)
        {
            if(a[i] == 'W')
            {
                win++;    
            }
            else if(a[i] == 'L')
            {
                lost++;
            }
            if(win == 11)
            {
                print(win,lost);
                win-=11;
            }
            if(a[i] == 'E')
            {
                print(win,lost);
                break;
            }
        }    
        cout<<endl;
        
        win=0;
        lost=0;
        for(int i=0;i<s;i++)
        {
            if(a[i]=='W')
            {
                win++;
            }
            else if(a[i] == 'L')
            {
                lost++;
            }
            if(win == 21)
            {
                print(win,lost);
                win-=21;
            }
            if(a[i] == 'E')
            {
                print(win,lost);
                break;
            }
            
        }
        return 0;
} 

  • 写回答

2条回答 默认 最新

  • zhanghongyi152 2023-04-20 16:43
    关注
    
    #include<bits/stdc++.h> 
    using namespace std;
    char ch, a[62505];
    int main(){
        int i=0, huahua=0, duishou=0, tmp = 0, flag = 1;
        while(cin >> ch && ch != 'E')
            a[i++] = ch;
        for(int j=0; j<i; j++){
            if(a[j] == 'W')    huahua++;
            else duishou++;
            if((huahua>=11 || duishou>=11) && abs(huahua - duishou) >= 2){//有一方达到11分,且两者分数差2分以上(包括2分)
                cout << huahua << ":" << duishou << endl;
                huahua = duishou = 0;
            }
        }
        cout << huahua << ":" << duishou << endl << endl;
        huahua = duishou = 0;
        for(int j=0; j<i; j++){
            if(a[j] == 'W')    huahua++;
            else duishou++;
            if((huahua>=21 || duishou>=21) && abs(huahua - duishou) >= 2){//有一方达到21分,且两者分数差2分以上(包括2分)
                cout << huahua << ":" << duishou << endl;
                huahua = duishou = 0;
            }
        }
        cout << huahua << ":" << duishou << endl;
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 4月20日
  • 创建了问题 4月20日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22