UVA10617- Again Palindrome
2014-07-16 19:49
316 查看
题意:给你一串字符串,找出有多少个回文字符串
思路:本题和UVA10739有些类似。d[i][j]表示字符i到字符j的回文字符串的个数
当str[i] == str[j]时,d[i][j] = d[]i + 1[j] + d[i][j - 1] - d[i + 1][j - 1] + d[i + 1][j - 1] + 1 = d[i + 1][j] + d[i][j - 1] + 1;
当str[i] != str[j]时,d[i][j] = d[]i + 1[j] + d[i][j - 1] - d[i + 1][j - 1];
递推:
思路:本题和UVA10739有些类似。d[i][j]表示字符i到字符j的回文字符串的个数
当str[i] == str[j]时,d[i][j] = d[]i + 1[j] + d[i][j - 1] - d[i + 1][j - 1] + d[i + 1][j - 1] + 1 = d[i + 1][j] + d[i][j - 1] + 1;
当str[i] != str[j]时,d[i][j] = d[]i + 1[j] + d[i][j - 1] - d[i + 1][j - 1];
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 65; char str[MAXN]; long long d[MAXN][MAXN]; long long dp(int a, int b) { if (a > b) return 0; if (a == b) return d[a][b] = 1; if (d[a][b] != -1) return d[a][b]; if (str[a] == str[b]) d[a][b] = dp(a + 1, b) + dp(a, b - 1) + 1; else d[a][b] = dp(a + 1, b) + dp(a, b - 1) - dp(a + 1, b - 1); return d[a][b]; } int main() { int cas; scanf("%d", &cas); while (cas--) { scanf("%s", str); int l = strlen(str); memset(d, -1,sizeof(d)); printf("%lld\n", dp(0, l - 1)); } return 0; }
递推:
for (int i = 0; i < l; i++) d[i][i] = 1; for (int i = l - 1; i >= 0; i--) for (int j = i + 1; j < l; j++) if (str[i] == str[j]) d[i][j] = d[i + 1][j] + d[i][j - 1] + 1; else d[i][j] = d[i + 1][j] + d[i][j - 1] - d[i + 1][j - 1];
相关文章推荐
- UVa 10617 - Again Palindrome 字符串dp
- UVA - 10617 Again Palindrome——dp
- UVA 10617 Again Palindrome 又是回文 dp,记忆化搜索
- UVa 10617 - Again Palindrome 字符串dp
- UVA 10617 Again Palindromes (区间dp)
- 记忆化搜索+回文串--UVA 10617 Again Palindrome
- uva10617 - Again Palindrome(dp)
- uva 10617 Again Palindrome
- UVA 题目10617 - Again Palindrome(区间DP)
- UVA 10617 dp 题库210页
- uva 10617 Again Palindrome
- Uva 10617 Again Palindrome (区间DP+回文串)
- UVA - 10617 Again Palindrome dp计数问题+记忆化
- uva_10617_Again Palindrome(普通DP, 记忆化搜索)
- uva 10617 - Again Palindrome
- UVa 10617 Again Palindromes / 记忆化搜索
- uva 10617 Again Palindromes(DP)
- uva 10617
- UVA - 10617 Again Palindrome
- UVA - 10617 Again Palindrome