讨论 / 其实也不难,数据没问题,乒乓球c++ ac代码
Nightingalelyy 2016-10-16 19:41:19
点我顶贴 收藏 删除
要注意的几个点:

1.对最后一局的记录

2.数组要开大点

3.乒乓球11:10,21:20不算赢,超过一定数之后要赢两球

4.输出中间有个空行,比分中间没有空格

下面是ac代码

#include <iostream>

#include <cstdio>

using namespace std;

int c;

int m,n,i;

int m1,n1;

int a[10000000];

int a1[10000000];

int b[10000000];

int b1[10000000];

int t,t1;

int main()

{

m=0;n=0;m1=0;n1=0;

t=1;

t1=1;

while((c=getchar())!=EOF)

{

if (c=='W')

{ ++m;++m1;}

if (c=='L')

{ ++n;++n1;}

if (c=='E')

{

a[t]=m;

a1[t]=n;

b[t1]=m1;

b1[t1]=n1;

break;

}

if (m==11&&m-n>=2)

{

a[t]=m;

m=0;

a1[t]=n;

n=0;

t++;

}

else if (m>11&&m-n>=2)

{

a[t]=m;

m=0;

a1[t]=n;

n=0;

t++;

}

else if (n==11&&n-m>=2)

{

a[t]=m;

m=0;

a1[t]=n;

n=0;

t++;

}

else if (n>11&&n-m>=2)

{

a[t]=m;

m=0;

a1[t]=n;

n=0;

t++;

}

if(m1==21&&m1-n1>=2)

{

b[t1]=m1;

b1[t1]=n1;

m1=0;

n1=0;

t1++;

}

else if(m1>21&&m1-n1>=2)

{

b[t1]=m1;

b1[t1]=n1;

m1=0;

n1=0;

t1++;

}

else if(n1>21&&n1-m1>=2)

{

b[t1]=m1;

b1[t1]=n1;

m1=0;

n1=0;

t1++;

}

else if(n1==21&&n1-m1>=2)

{

b[t1]=m1;

b1[t1]=n1;

m1=0;

n1=0;

t1++;

}

}

for(i=1;i<=t;i++)

cout<<a[i]<<":"<<a1[i]<<endl;

cout<<endl;

for(i=1;i<=t1;i++)

cout<<b[i]<<":"<<b1[i]<<endl;

return 0;

}

我采用了数组记录结果的办法

m,n表示当前两个人11分制的分数

m1,n1表示当前两个人21分制的分数

a,a1两个数组存放第t局11分制的比分

b,b1两个数组存放第t1局21分制的比分

t,t1表示两种数据的局数

达到条件就存放比分,局数+1,输入到E就break

最后一并输出

我就是个渣,希望大牛勿喷,上面只是我找到的一些容易导致wa的问题。

如果有帮助记得点个赞

#1 李大猷@2017-01-10 13:45:55
回复 删除
真的是数组要开很大很大!!!
查看更多回复
提交回复