题目链接:https://www.luogu.com.cn/problem/P1042
解题代码:
#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
int f[2]={11,21};
int a[25*2501+100];
int main()
{
int tag=-1;
char temp;
while(1)
{
cin>>temp;
if(temp=='E')
{
break;
}
else if(temp=='W')
{
a[++tag]=1;
}
else if(temp=='L')
{
a[++tag]=0;
}
//cout<<tag<<": "<<a[tag]<<endl;
}
for(int k=0;k<2;k++)
{
int w=0,l=0;
for(int i=0;i<=tag;i++)
{
w+=a[i];
l+=(1-a[i]);
//cout<<i<<": "<<a[i]<<endl;
if(max(w,l)>=f[k]&&abs(w-l)>=2)
{
cout<<w<<":"<<l<<endl;
w=0;
l=0;
}
}
cout<<w<<":"<<l<<endl;
cout<<"\n";
}
}
if(temp==‘E’)
{
break;
}
else if(temp==‘W’)
{
a[++tag]=1;
}
else if(temp==‘L’)
{
a[++tag]=0;
}
这部分如果++tag改为tag++,就是wa。原因如下:
i++ 即后加加,原理是:先自增,然后返回自增之前的值
++i 即前加加,原理是:先自增,然后返回自增之后的值
由于此处最先定义tag=-1,那么要让数组序列从0开始,必须使用++tag;如果要使用tag++,那么最先定义时,要令tag=0。