rqnoj-165-FBI序列-O(n)算法

O(n)的时间复杂度~~

#include<string.h>
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int dp[1100000];
int main()
{
    char str[5001];
    int n,i;
    while(gets(str)!=NULL)
    {
        n=strlen(str);
        for(i=1;i<=n;i++)
        {
            if(str[i-1]=='F')dp[i]=dp[i-1]+1;
            else dp[i]=dp[i-1];
        }
        for(i=n;i>=1;i--)
        {
            if(str[i-1]=='B')dp[i]=dp[i];
            else dp[i]=0;
        }
        for(i=1;i<=n;i++)dp[i]+=dp[i-1];
        int sum=0;
        for(i=1;i<=n;i++)
        {
            if(str[i-1]=='I')sum+=dp[i];
        }
        cout<<sum<<endl;
    }
    return 0;
}


你可能感兴趣的:(rqnoj-165-FBI序列-O(n)算法)