第四题子序列,不知道对不对...
大佬们帮忙看一下吧,再请教一下前端、移动端的第一题怎么写,送分题感觉思路错了

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;
}