code forces 405B Domino Effect 题目链接:http://codeforces.com/problemset/problem/405/B
题目大意:多米诺效应。给出一个序列,每一个字符代表一张多米诺骨牌,'.'表示不动,'L'表示把它向左推,'R'表示把它向右推,问最后有几个直立的。
题目分析:description的图给了我灵感,向左推进的牌每推一个多减一,反之加一。最后数零。
code:
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n,l,r;
short cnt[3010];
char s[3010];
while(scanf("%d",&n)!=EOF)
{
scanf("%s",s);
memset(cnt,0,sizeof(cnt));
for(i=0;i<n;i++)
{
if(s[i]=='L')
{
for(j=1,l=i-1;l>=0&&s[l]=='.';l--,j++)
{
cnt[l]-=j;
}
}
if(s[i]=='R')
{
for(j=1,r=i+1;r<n&&s[r]=='.';r++,j++)
{
cnt[r]+=j;
}
}
}
for(j=i=0;i<n;i++)
{
if(!cnt[i]&&s[i]=='.')j++;
}
printf("%d\n",j);
}
return 0;
}
PS:life is
Inspiration