给出一棵树的 dfs 序,求可能的构成方案数。
A______A_______
f[l ][ r] =sum{ f[l+1][k-1] *f[k][j] }
#include <iostream> #include <cstring> #include <sstream> using namespace std; const int N=304; const int mod =1e9; #define int long long char a[N]; int n,f[N][N]; int dp(int l,int r){ if(~f[l][r]) return f[l][r]; if(l==r) return 1; f[l][r]=0; for(int k=l+1;k<=r;k++){ if(a[l]==a[k]) f[l][r]+=dp(l+1,k-1)*dp(k,r)%mod,f[l][r]%=mod; } return f[l][r]; } signed main(){ while(cin>>(a+1)) memset(f,-1,sizeof f),cout<<dp(1,strlen(a+1))<<'\n'; }
- Exploring Pyramids 1362 UVAexploring pyramids 1362 uva 1362 pyramids exploring evaluation exploring humanized models exploring unreal系统ue4 parallelism multi-core exploring project optimization exploring recursion convex development preclinical toxicology exploring model-based exploring planning networks