1 solutions
-
0
C++ :
#include<iostream> #include<algorithm> #include<cstdio> #include<cmath> #include<cstring> #include<vector> #include<queue> #include<map> using namespace std; const long long N=100+5,md=1000000007; long long n,f[N][N],g[N][N],ans; string st; int main() { cin>>st; n=st.size(); st=" "+st; for (int i=1;i<=n;i++) f[i][i]=g[i][1]=1; ans=n; for (int l=2;l<=n;l++) { for (int i=1,j=l;j<=n;i++,j++) { g[i][l]=g[i][l-1]; if (st[i]!=st[j]) continue; f[i][j]=1; for (int k=i+1;k<=j-1;k++) { f[i][j]+=g[k][j-k]; f[i][j]%=md; } g[i][l]+=f[i][j]; g[i][l]%=md; ans+=f[i][j]; ans%=md; } } cout<<ans; return 0; }
- 1
Information
- ID
- 887
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- (None)
- # Submissions
- 0
- Accepted
- 0
- Uploaded By