erewrwerwer
来源:互联网 发布:程序员入门书籍 编辑:程序博客网 时间:2024/06/01 10:08
问题 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 longusing 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(){;}