HDU 4632 Palindrome subsequence(动态规划)

简介: HDU 4632 Palindrome subsequence(动态规划)

文章目录

  • 题目
  • AC代码


题目

本题链接:Palindrome subsequence

本博客给出本题截图

999999999999.png

AC代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
const int N = 1010, mol = 10007;
int f[N][N];
int main()
{
    int T;
    cin >> T;
    int t = 1;
    while (T -- )
    {
        string s;
        cin >> s;
        int n = s.size();
        memset(f, 0, sizeof f);
        for (int i = 0; i < n; i ++ ) f[i][i] = 1;
        for (int len = 2; len <= n; len ++ )
            for (int i = 0; i + len - 1 < n; i ++ )
            {
                int j = i + len - 1;
                f[i][j] =  (f[i + 1][j] + f[i][j - 1] - f[i + 1][j - 1] + mol) % mol;
                if (s[i] == s[j]) f[i][j] = (f[i][j] + f[i + 1][j - 1] + 1 + mol) % mol;
            }
        printf("Case %d: %d\n", t ++, f[0][n - 1] % mol);
    }
    return 0;
}



目录
相关文章
Leetcode 516. Longest Palindromic Subsequence
找到一个字符串的最长回文子序列,这里注意回文子串和回文序列的区别。子序列不要求连续,子串(substring)是要求连续的。leetcode 5. Longest Palindromic Substring就是求连续子串的。
49 0
|
6月前
|
Java
hdu-1513-Palindrome
hdu-1513-Palindrome
23 0
|
算法
poj 1159 Palindrome(最长公共子串)
关于求最长公共子串, 用到的是动态规划
35 0
|
算法
POJ3061 Subsequence
POJ3061 Subsequence
LeetCode 376. Wiggle Subsequence
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。
98 0
LeetCode 376. Wiggle Subsequence
|
索引
LeetCode 392. Is Subsequence
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
102 0
LeetCode 392. Is Subsequence
LeetCode 409. Longest Palindrome
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。
74 0
LeetCode 409. Longest Palindrome
409. 最长回文串 Longest Palindrome
409. 最长回文串 Longest Palindrome
|
移动开发
HDOJ/HDU 2163 Palindromes(判断回文串~)
HDOJ/HDU 2163 Palindromes(判断回文串~)
93 0