HDU 3336 输出包括从1到len长 字符串前缀的总个数(+DP)

Sample Input
1
4
abab

Sample Output
6
输出包括从1到len长 字符串前缀的总个数
abab:包括2个a,2个ab,1个aba,1个abab

 # include <cstdio>
# include <cstring>
using namespace std; char S[] ;
int next[] ;
int dp[] ;
int len ; void getNext()
{
int j, k;
j = ; k = -; next[] = -;
while(j < len)
if(k == - || S[j] == S[k])
next[++j] = ++k;
else
k = next[k];
} int main ()
{
int T ;
scanf("%d" , &T);
while (T--)
{
scanf("%d" , &len) ;
scanf("%s" , S) ;
getNext() ;
dp[] = ;
int ans = ;
int i ;
for (i = ; i<= len ; i++)
{
dp[i] = dp[next[i]] + ;
dp[i] %= ;
ans += dp[i] ;
ans %= ;
}
printf("%d\n" , ans) ; } return ;
}
上一篇:javascript 去除字符串中重复字符


下一篇:yii2-basic后台管理功能开发之二:创建CRUD增删改查