zyx_dzpd @ 2024-08-30 21:58:39
我感觉没错。。。
#include<bits/stdc++.h>
//#define //不加";"
using namespace std;
int a[25*2500+100],n,i,j,f[2]={11,21};
int main()
{
char s;
while(1){
cin>>s;
if(s=='E') break;
else if(s=='W') a[n++]=1;
else if(s=='L') a[n++]=0;
}
for(j=0;j<2;j++){
int w=0,l=0;
for(i=0;i<n;i++){
w+=a[i];
l+=l-a[i];
if((max(w,l)>=f[j])&&abs(w-1)>=2){
cout<<w<<": "<<l<<"\n";
w=l=0;
}
}
cout<<w<<":"<<l<<"\n\n";
}
return 0;
}
提示:改个代码吧,求求了
by manis @ 2024-08-31 14:56:18
@zyx_dzpd 你的1与L混用了
by manis @ 2024-08-31 15:05:50
在编译器里很明显可以看到,第20行的 L+=L-a[i];
应是L+=1-a[i];
第21行的abs(w-1)>=2
应是abs(w-L)>=2
(为了看清,均用大写L)
by manis @ 2024-08-31 15:08:42
你的代码我改好了:
#include<bits/stdc++.h>
//#define //不加";"
using namespace std;
int a[25*2500+100],n,i,j,f[2]={11,21};
int main()
{
char s;
while(1){
cin>>s;
if(s=='E') break;
else if(s=='W') a[n++]=1;
else if(s=='L') a[n++]=0;
}
for(j=0;j<2;j++){
int w=0,l=0;
for(i=0;i<n;i++){
w+=a[i];
l+=1-a[i];
if((max(w,l)>=f[j])&&abs(w-l)>=2){
cout<<w<<": "<<l<<"\n";
w=l=0;
}
}
cout<<w<<":"<<l<<"\n\n";
}
return 0;
}
by zyx_dzpd @ 2024-08-31 20:30:28
谢,已关