codeforces 909C. Python Indentation
阿新 • • 發佈:2018-11-11
動態規劃的題目
狀態轉移方程參考https://www.cnblogs.com/Leohh/p/8135525.html
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #include<string> #include<vector> #define DEBUG(x) cout<<#x<<" = "<<x<<endl usingnamespace std; const int MAXN=5e3+10; const int MOD=1e9+7; ///第i個表示式縮排j個單位,有多少種結果 int dp[MAXN][MAXN]; char prg[MAXN]; int main() { // freopen("in.txt","r",stdin); int n; scanf("%d\n",&n); for(int i=1;i<=n ;i++ ){ scanf("%c\n",&prg[i]); } dp[1][0]=1; for(int i=2;i<=n ;i++ ){ ///第i行縮排不超過i-1個單位 if(prg[i-1]=='f'){ dp[i][0]=0; for(int j=1;j<=i-1 ;j++ ){ dp[i][j]=dp[i-1][j-1]%MOD; } } else { ///從右往左,累計求和 for(int j=i-2;j>=0 ;j-- ){ dp[i][j]=(dp[i][j+1]%MOD+dp[i-1][j]%MOD)%MOD; } } } int ans=0; if(prg[n]=='s') for(int i=0;i<=n-1 ;i++ ){ ans=(ans+dp[n][i])%MOD; } printf("%d\n",ans); }