题目要求:
最长回文子序列
题目思想大概是这样:cabbeaf:回文子序列有:c,a,aa,bb,,aba,abba,e,f,最长的就是abba,所以输出长度为4
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
while(s.hasNext()){
System.out.println(getMaxLength(s.next()));
}
}
public static int getMaxLength(String s){
if(s==null)return 0;
if(s.length()<2) return s.length();
int n=s.length();
int[][] matrix=new int[n][n];
for(int i=0;i<n;i++){
matrix[i][i]=1;
}
int max=1;
for(int i=n-1;i>=0;i--){
for(int j=i+1;j<n;j++){
if(s.charAt(i)==s.charAt(j)){
if(j==i+1){
matrix[i][j]=2;
}else{
matrix[i][j]=matrix[i+1][j-1]+2;
}
if(matrix[i][j]>max){
max=matrix[i][j];
}
}else{
matrix[i][j]=Math.max(matrix[i][j-1],matrix[i+1][j]);
}
}
}
return max;
}
}