动态规划经典题目汇总(多点赞关注哦)
(1)最长公共子序列:
package 动态规划;
import java.util.Scanner;
public class Main最长公共子序列 {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{
char x[]=cin.next().toCharArray();
char y[]=cin.next().toCharArray();
int m=x.length;
int n=y.length;
int c[][]=new int[m+1][n+1];
for(int i=0;i<m;i++)c[i][0]=0;
for(int j=0;j<n;j++)c[0][j]=0;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(x[i-1]==y[j-1])
{
c[i][j]=c[i-1][j-1]+1;
}
else if(c[i-1][j]>=c[i][j-1])
{
c[i][j]=c[i-1][j];
}
else{
c[i][j]=c[i][j-1];
}
}
}
System.out.println(c[m][n]);
}
}
}
(2)最长回文子串
package testself;
import java.util.Scanner;
public class Main最长回文子串 {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
String str=cin.nextLine(