全红求救,IDLE调试没问题啊

P1042 [NOIP2003 普及组] 乒乓球

ScreamingWheat @ 2024-11-05 22:34:26

str1=input()
hua11 = [0, 0]  # 1111分制的比分
hua21 = [0, 0]  # 2121分制的比分
l1 = []  # 1111分制的比分列表
l2 = []  # 2121分制的比分列表

for i in str1:
    if i == 'W':
        hua11[0] += 1
        hua21[0] += 1
    elif i == 'L':
        hua11[1] += 1
        hua21[1] += 1
    elif i == 'E':
           break

        # 检查1111分制是否结束一局
    if (hua11[0] >= 11 and hua11[0] - hua11[1] >= 2) or (hua11[1] >= 11 and hua11[1] - hua11[0] >= 2):
        l1.append(hua11) # 添加当前比分并重置
        hua11 = [0, 0]

        # 检查2121分制是否结束一局
    if (hua21[0] >= 21 and hua21[0] - hua21[1] >= 2) or (hua21[1] >= 21 and hua21[1] - hua21[0] >= 2):
        l2.append(hua21)  # 添加当前比分并重置
        hua21 = [0, 0]

    # 添加最后一局的比分(如果比赛没有结束)
if hua11 != [0, 0]:
    l1.append(list(hua11))
if hua21 != [0, 0]:
    l2.append(list(hua21))

    # 将比分列表转换为字符串
str11 = "\n".join([f"{score[0]}:{score[1]}" for score in l1])
str21 = "\n".join([f"{score[0]}:{score[1]}" for score in l2])
print(str11 + "\n\n" + str21)

by ScreamingWheat @ 2024-11-05 22:35:36

新手小白一枚,输入了测试例子和其他几个例子,IDLE里边都能正确跑出来


by AK47N @ 2024-11-17 13:24:38

qp


by AK47N @ 2024-11-17 13:25:40

@ScreamingWheat 点关注

#include <iostream>
#include <cstring>
using namespace std;
int win[62503]; 
int w,l;
int main()
{
    char s;
    for(int i=1;cin>>s&&s!='E';i++)//循环读入,当读到字符E结束 
    {
        if(s=='W')win[i]=1; 
        else win[i]=2; 
    }
    //----------------11分制 ----------------
    for(int i=1;1;i++)
    {
        if(win[i]==1)w++;//胜场+1 
        if(win[i]==2)l++;//负场+1 
        if(win[i]==0)//读到0则记录结束,输出记录结束前的分数。 
        {
            cout<<w<<":"<<l<<endl<<endl;
            break;
        }
        if(w-l>=2||l-w>=2)
            if(w>=11||l>=11)//当双方比分相差大于2且一方分数大等于11输出 
            {
                cout<<w<<":"<<l<<endl;
                w=0;//比分清零 
                l=0;
            }
    }
    w=0;//清零,为21分制计算做准备 
    l=0;
    //----------------21分制 ----------------
    for(int i=1;1;i++)//一切同上,唯一区别就是判定从11变为21 
    {
        if(win[i]==1)w++;
        if(win[i]==2)l++;
        if(win[i]==0)
        {
            cout<<w<<":"<<l;
            break;
        }
        if(w-l>=2||l-w>=2)
            if(w>=21||l>=21)//11变为21 
            {
                cout<<w<<":"<<l<<endl;
                w=0;
                l=0;
            }
    }
    return 0;//华丽地结束  ㄟ(▔▽▔)ㄏ
}

|