hdu 4632 Palindrome subsequence
来源:互联网 发布:数据库中的主键怎么设 编辑:程序博客网 时间:2024/05/17 08:58
题目连接
题意:找出字符串中所有回文子序列的个数,最后%10007;
用简单的DP做,核心是要把每一串回文子序列都看成一个个体,
例如:aebcdbta中 在区间[1,6]中的个体有9个:e,b,c,d,b,t,bcb,bdb,bb;
明白这个,这样就可以dp了,
所以假设在区间dp[ i] [ j ]表示区间[i ,j]中个体的个数;
假设字符串S(s1,s2,.....,),在区间[i + 1,j - 1]中的个体是n个,
就可以表示为s[ i ] (n) s[ j ] ;所以有dp[ i ][ j - 1] = n + 1;dp[i + 1][ j ] = n + 1;
现在要求dp[ i ][ j ] :1,当s[ i ] == s[ j ]
dp[ i ] [ j ] =dp[ i ][ j - 1] + dp[i + 1][ j ] + 1;
2,当s[i] != s[j]
dp[ i ] [ j ] = dp[ i ][ j - 1] + dp[i + 1][ j ] - dp[i + 1][j - 1];
要注意mod的时候会出现负数要处理。
/*题意:找出字符串中所有回文子序列的个数,最后%10007想法:1,把一个区间中的没有个回文子序列都看成一个个体 */ #include <cstdio>#include <iostream>#include <cstring>#include <cstdlib>using namespace std;char s[1100];int pan[1100][1100];int dp[1100][1100];int main (){int i,j,k;int t;int n;cin >> t;for (k = 1 ; k <= t ; k ++){cin >> s;memset (dp,0,sizeof(dp));n = strlen (s);for (i = 0 ; i < n ; i ++){for (j = 0 ; j + i < n ; j ++ ){if (j == j + i)dp[j][j + i] = 1;else{if (s[j] == s[j + i])dp[j][j + i] = dp[j][j + i - 1] + dp[j + 1][j + i] + 1;elsedp[j][j + i] = dp[j][j + i - 1] + dp[j + 1][j + i] - dp[j + 1][j + i - 1];}dp[j][i + j] = (dp[j][j + i] + 10007) % 10007;}}printf ("Case %d: %d\n",k,dp[0][n - 1]);}}
- HDU 4632 Palindrome subsequence
- hdu 4632 Palindrome subsequence
- hdu 4632 Palindrome subsequence
- HDU-4632-Palindrome subsequence
- hdu 4632 Palindrome subsequence
- hdu 4632Palindrome subsequence
- hdu 4632 Palindrome subsequence
- hdu-4632 Palindrome subsequence
- hdu 4632 Palindrome subsequence (dp)
- Hdu-4632 Palindrome subsequence DP
- HDU 4632 Palindrome subsequence(区间dp)
- HDU 4632 Palindrome subsequence 解题报告
- hdu 4632 Palindrome subsequence(DP)
- hdu - 4632 - Palindrome subsequence(dp)
- HDU 4632——Palindrome subsequence
- hdu 4632——Palindrome subsequence
- hdu-4632-Palindrome subsequence-记忆化dp
- hdu-4632-Palindrome subsequence DP&回文字串
- 《我的第一本c++书》学习笔记:STL之迭代器指针的使用注意事项
- POJ 1269 Intersecting Lines
- [smart210] Nand Flash K9F4G08U0B 的配置与读写控制(二)
- 今天A了好多畅通工程————hdu-1874再续畅通工程
- SQL Server 2008提示评估期已过期
- hdu 4632 Palindrome subsequence
- 分享职场心得《16》
- 2013多校联合4 1010 K-string (hdu 4641)
- string.xml 中显示特殊符号
- HDOJ 4635: Strongly connected
- Android Launcher 源码编译,图标显示不正常
- 根文件系统的建立
- Ubuntu修复日记
- 常用符号翻译