输出最长回文子序列字符数

xiaoxiao2021-02-27  501

#include <bits/stdc++.h> using namespace std; int ans[1000][1000]; int dfs(string a) { string ra=a; reverse(a.begin(),a.end()); memset(ans,0,sizeof(ans)); for(int i=0; i<a.size(); i++) for(int j=0; j<a.size(); j++) { if(a[i]==ra[j]) { ans[i+1][j+1]=ans[i][j]+1; } else { ans[i+1][j+1]=ans[i][j+1]>ans[i+1][j]?ans[i][j+1]:ans[i+1][j]; } } return ans[a.size()][a.size()]; } int main() { string a; while(cin>>a) { cout<<dfs(a)<<endl; } return 0; }
转载请注明原文地址: https://www.6miu.com/read-4549.html

最新回复(0)