天天看點

725A Jumping Ball

題目連結:

http://codeforces.com/problemset/problem/725/A

題解:

題目大意:

給你n個保險杆(能夠控制球的方向),>表示球向右移動一個機關,<表示球向左移動一個機關,問你球在那幾個位置的時候可以出去,不會陷入循環。

簡單的水題,先記錄一下能夠左移的球,一旦遇到不能左移,就直接将整個停止,在記錄一下右移的球,一旦不能右移,在直接停掉。最後,看兩個數組中能夠移動的球的總的數目。

代碼:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int maxn = *+;
bool l[maxn],r[maxn];
char s[maxn];

int main()
{
    int  n;
    scanf("%d",&n);
    scanf("%s",s);
    met(l,false);
    met(r,false);
    for(int i=;i<n;i++)
    {
        if(s[i]=='<')
            l[i]=true;
        else
            break;
    }
    for(int i=n-;i>=;i--)
    {
        if(s[i]=='>')
            r[i]=true;
        else
            break;
    }
    int  cnt=;
    for(int i=;i<n;i++)
    {
        if(l[i]==true||r[i]==true)
            cnt++;
    }
    printf("%d\n",cnt);
}
           
ACM