问题 B: erewrwerwer
时间限制: 1 Sec 内存限制: 512 MB题目描述
给你一个字符串,请问其有多少个子序列为erewrwerwer
输入格式:
一行一个字符串,由小写字母’e’、’w’或者’r’组成
输出格式:
一行一个整数,表示为erewrwerwer的子序列数,模1e9+7
样例输入:
erewrwerwererewrwerwer
样例输出:
260
数据范围与约定:
设n为字符串长度
对于前%20的数据,n<=11
对于另外%30的数据,n<=20
对于%100的数据,n<=100000
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<queue>
#include<map>
#include<cstdlib>
#include<algorithm>
#define V 100005
#define mod 1000000007
#define LL long long
using namespace std;
LL f[V][20];
int n,m;
string w,md;
inline int haha()
{
// freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);
// freopen("ere.in","r",stdin);freopen("ere.out","w",stdout);
cin>>w;
n=w.size();
md="erewrwerwer";
m=md.size();
//cout<<md<<endl;
for(int i=1;i<=n;i++)
{
if(w[i-1]==md[0])
f[i][1]=1;
for(int j=1;j<=m;j++)
{
f[i][j]+=f[i-1][j];
if(w[i-1]==md[j-1])
{
f[i][j]+=f[i-1][j-1];
f[i][j]%=mod;
}
f[i][j]%=mod;
}
}
cout<<f[n][m]<<endl;
return 0;
}
int gg=haha();
int main()
{;}