有4种情况 :L L ;R R; L R; R L;用flag记录前一个非‘.’是L还是R。L R或空 R中间全不倒,R L 中间奇数+1。最后一个特殊判
#include<stdio.h>
#include<string.h>
char str[3005];
int val[3005],visit[3005];
int main(){
int n;
scanf("%d %s",&n,str);
int cnt=0,flag=-1,ans=0;
for(int i=0;i<n;i++){
if(str[i]=='L'){
if(flag==1&&cnt%2)
ans++;
cnt=0;
flag=0;
}
else if(str[i]=='R'){
if(flag==-1)
ans+=cnt;
else if(flag==0)
ans+=cnt;
cnt=0;
flag=1;
}
else cnt++;
}
//printf("%d\n",ans);
cnt=0;
for(int i=n-1;i>=0;i--){
if(str[i]=='L'){
ans+=cnt;cnt=0;break;
}
else if(str[i]=='R'){
cnt=0;break;
}
else cnt++;
}
ans+=cnt;
printf("%d\n",ans);
return 0;
}