代码求调
查看原帖
代码求调
552688
clx201022楼主2023/3/24 19:18
#include<bits/stdc++.h>
using namespace std;
struct lun
{
    int first,sum,fen;//第一轮,总和和得分
    lun()
    {first=-1;sum=-1;fen=0;}
}l[13];
inline int zh(char c)
{
    return c=='/'?10:c-'0';
}
char qc()
{
    char x;
    while(x=getchar())
    {
        if('0'<=x<='9'||x=='/')
            return x;
        if(x=='\n')return '\n';
    }
}
int lunshu=1;//到了第几轮
int sum[13];
int main()
{
    char x='\0';
    int y=0;
    while((x=qc())!='\n')
    {
        y=zh(x);
        l[lunshu].first=y;
        if(y==10)
        {
            l[lunshu].sum=10;
            //如果第一轮就全中,总和就是10
        }
        else
        {
            x=qc();
            if(x=='\n')
                break;
            y=zh(x);
            /*if(y==10)
            {
                l[lunshu].sum=10;
            }
            else
            {
                l[lunshu].sum=l[lunshu].first+y;
            }*/
            l[lunshu].sum=(y==10)?10:(l[lunshu].first+y);
            //(总和)如果打完了,就是十个,没打完,就和前面的加起来
        }
        if(lunshu>=2)
        {
            if(l[lunshu-1].sum==10&&l[lunshu-1].first!=10)
            {
                l[lunshu-1].fen=10+l[lunshu].sum;
                //第二次全中,等于10+后面一轮
            }
        }
        if(lunshu>=3)
        {
            if(l[lunshu-2].first==10)
            {
                l[lunshu-2].fen=10+l[lunshu].sum+l[lunshu-1].sum;
                //第一次全中,等于10+后面两轮
            }
        }
    }
    y=1;
    while(l[y].fen>0)
    {
        cout<<l[y].fen<<' ';
        sum[y]=sum[y-1]+l[y].fen;
        y++;
    }
    y=1;
    cout<<'\n';
    while(sum[y]>0)
    {
        cout<<sum[y]<<' ';
        y++;
    }
    return 0;
}

TLE了

2023/3/24 19:18
加载中...