http://codeforces.com/problemset/problem/405/B
给你了一些骨牌,给你了一些排现在的状态,问现在还有多少张排是竖着的?
'L':朝左
'R':朝右
'.':状态不确定
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<map>
using namespace std;
#define ll long long
using namespace std;
int main()
{
int n;
string a;
cin>>n>>a;
int ans=0;
// for(int i=0; i<n; i++)//第一种写法
// {
// if(a[i]=='.')
// {
// ans++;
// }
//
// if(a[i]=='L')
// ans=0;
// if(a[i]=='R')
// {
// int cot=0;
// for(; i<n; i++)
// {
// if(a[i]=='.')
// cot++;
// if(a[i]=='L')
// {
// ans+=cot%2;
// break;
// }
// }
// }
// }
// printf("%d\n",ans);
// return 0;
char c=0;
int cot=0;///储存中间变量
for(int i=0;i<n;i++)//第二种写法
{
if(a[i]=='.')//记录中间的'.'值
cot++;
if(a[i]=='R')//如果是'R',就加上前面的cot值,进入下一段,记录这个时候的已知状态
ans+=cot,cot=0,c=a[i];
if(a[i]=='L')//是'L'
{
if(c=='R')//'L'的前一个状态是'R'的话,就加上cot%2;
ans+=cot%2;
cot=0,c=a[i];//进入下一段,记录这个时候的已知状态
}
}
if(c!='R')//最后一个已知状态不是朝右,就加上最后一段的cot
ans+=cot;
cout<<ans<<endl;
return 0;
}