讨论 / 其实也不难,数据没问题,乒乓球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
回复 删除
真的是数组要开很大很大!!!
#2 retro@2017-05-01 18:00:13
回复 删除
#include<iostream>

#include<string.h>

#include<memory.h>

using namespace std;

int main()

{

char s[100000],*p,*j;

int i=0,a[1000][2],b[1000][2];

memset(a,0,sizeof(a));

memset(b,0,sizeof(b));

while(cin>>s[i]&&s[i]!='E')i++;

for(p=s,i=0;p<&s[strlen(s)];p+=11,i++)

{

for(j=p;j<p+11&&*j!='E';j++)

{

if(*j=='W')

a[i][0]++;

if(*j=='L')

a[i][1]++;

}

}

for(p=s,i=0;p<&s[strlen(s)];p+=21,i++)

{

for(j=p;j<p+21&&*j!='E';j++)

{

if(*j=='W')

b[i][0]++;

if(*j=='L')

b[i][1]++;

}

}

for(i=0;i<=(strlen(s)/11);i++)

cout<<a[i][0]<<":"<<a[i][1]<<endl;

cout<<endl;

for(i=0;i<=(strlen(s)/21);i++)

cout<<b[i][0]<<":"<<b[i][1]<<endl;

return 0;

}

其他也没问题,求问这样的话要怎么控制输入啊

查看更多回复
提交回复