给定一个字符串,找到其中最长的回文子序列,并返回该序列的长度。 注:回文序列是指这个序列无论从左读还是从右读都是一样的。 本题中子序列字符串任意位置删除k(len(s)>=k>=0)个字符后留下的子串。 数据范围:字符串长度满足 进阶:空间复杂度 , 时间复杂度
区块链毕设网qklbishe.com为您提供问题的解答
给定一个字符串,找到其中最长的回文子序列,并返回该序列的长度。
注:回文序列是指这个序列无论从左读还是从右读都是一样的。
本题中子序列字符串任意位置删除k(len(s)>=k>=0)个字符后留下的子串。
数据范围:字符串长度满足
进阶:空间复杂度 , 时间复杂度
#include <iostream> #include <cstdio> #include <string> using namespace std; const int MAXN = 1000 + 10; int dp[MAXN][MAXN]; int main() { string str; cin >> str; for(int i = 0; i < str.size() - 1; ++i) { dp[i][i] = 1; } for(int i = str.size() - 1; i >= 0; --i) { for(int j = i + 1; j < str.size(); ++j) { if(str[i] == str[j]) { dp[i][j] = dp[i + 1][j - 1] + 2; } else { dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]); } } } cout << dp[0][str.size() - 1] << endl; return 0; }
21:13
以上就是关于问题给定一个字符串,找到其中最长的回文子序列,并返回该序列的长度。
注:回文序列是指这个序列无论从左读还是从右读都是一样的。 本题中子序列字符串任意位置删除k(len(s)>=k>=0)个字符后留下的子串。
数据范围:字符串长度满足 进阶:空间复杂度 , 时间复杂度的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训