hdu 4055

来源:互联网 发布:淘宝会员积分规则 编辑:程序博客网 时间:2024/05/17 02:54

http://acm.hdu.edu.cn/showproblem.php?pid=4055

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>using namespace std;const int mod=1000000007;const int sizen=1010;__int64 dp[sizen][sizen];__int64 sum[sizen][sizen];char str[sizen];int main(){    int i,j;    int len;    while(scanf("%s",str)!=EOF)    {                dp[1][1]=sum[1][1]=1;        len=strlen(str);        for(i=2;i<=len+1;i++)            for(j=1;j<=i;j++)            {                if(str[i-2]=='I')                    dp[i][j]=sum[i-1][j-1]%mod;                if(str[i-2]=='D')                    dp[i][j]=(sum[i-1][i-1]-sum[i-1][j-1]+mod)%mod;                if(str[i-2]=='?')                    dp[i][j]=sum[i-1][i-1];                sum[i][j]=(dp[i][j]+sum[i][j-1])%mod;            }        printf("%I64d\n",sum[len+1][len+1]);    }    return 0;}

0 0