第四题子序列,不知道对不对... 大佬们帮忙看一下吧,再请教一下前端、移动端的第一题怎么写,送分题感觉思路错了 int main() { int n; cin >> n; string s = ""; for (int i = 0; i < n; ++i) { char c; cin >> c; s += c; } // dp[i] 表示 考虑 [0, i] 最长递增子序列长度, 以 s[i]为结尾 的 最长好序列递增子序列长度 vector<int> dp(n); int res = 0; for(int i = 2; i < n; ++i) { for(int j = 1; j < i; ++j) { // j比较到i的前一个 if(s[i] == s[j - 1]) { // s[i] 和 s[j - 1]相同,状态转移 dp[i] = max(max(dp[i], dp[j] + 1), 3); // 至少为3,dp[i]保证为最长的 } } if(dp[i] > res) { res = dp[i]; } } cout << res; return 0; }
点赞 评论

相关推荐

点赞 评论 收藏
分享
投递亚信科技(中国)有限公司等公司10个岗位
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务