博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HIHO1149]回文字符序列(dp)
阅读量:5040 次
发布时间:2019-06-12

本文共 939 字,大约阅读时间需要 3 分钟。

题目链接:http://hihocoder.com/problemset/problem/1149

题意:中文的。

dp(i,j)表示[i,j]区间内的回文串数量。

如果s[i]!=s[j],dp(i,j)=dp(i+1,j)+dp(i,j-1)-dp(i+1,j-1)

如果s[i]==s[j],dp(i,j)=dp(i+1,j)+dp(i,j-1)+1

注意取模

1 #include 
2 using namespace std; 3 4 const int maxn = 1010; 5 const int mod = 100007; 6 int n; 7 char s[maxn]; 8 int dp[maxn][maxn]; 9 10 int main() {11 //freopen("in", "r", stdin);12 int T, _ = 1;13 scanf("%d", &T);14 while(T--) {15 scanf("%s", s); n = strlen(s);16 memset(dp, 0, sizeof(dp));17 for(int i = 0; i < n; i++) dp[i][i] = 1;18 for(int i = 0; i < n; i++) {19 for(int j = i-1; j >= 0; j--) {20 if(s[i] != s[j]) dp[j][i] = dp[j+1][i] + (dp[j][i-1] - dp[j+1][i-1] + mod) % mod;21 else dp[j][i] = dp[j+1][i] + dp[j][i-1] % mod + 1 % mod;22 }23 }24 printf("Case #%d: %d\n", _++, dp[0][n-1] % mod);25 }26 return 0;27 }

 

转载于:https://www.cnblogs.com/kirai/p/5921115.html

你可能感兴趣的文章
Linux内核OOM机制的详细分析
查看>>
Android TextView加上阴影效果
查看>>
Requests库的基本使用
查看>>
C#:System.Array简单使用
查看>>
C#inSSIDer强大的wifi无线热点信号扫描器源码
查看>>
「Foundation」集合
查看>>
算法时间复杂度
查看>>
二叉树的遍历 - 数据结构和算法46
查看>>
类模板 - C++快速入门45
查看>>
centos7 搭建vsftp服务器
查看>>
RijndaelManaged 加密
查看>>
Android 音量调节
查看>>
HTML&CSS基础学习笔记1.28-给网页添加一个css样式
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
Redis事务
查看>>
Web框架和Django基础
查看>>
python中的逻辑操作符
查看>>
CSS兼容性常见问题总结
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>