编程算法之动态规划之最长公共子序列(java版)
来源:互联网 发布:papi酱起诉 知乎 编辑:程序博客网 时间:2024/06/05 09:30
问题:给定的两串字符,要求变成求出最长公共子序列;
程序:
import java.util.Scanner;
public class LCS {
/**
* @param args
*/
public static void main(String[] args) { //可以实现用户自己输入两串字符:
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一串字符:");
String s1 = scanner.next();
System.out.println("请输入一串字符:");
String s2 = scanner.next();
int c[][] = new int [s1.length() + 1][s2.length() + 1];
int b[][] = new int [s1.length() + 1][s2.length() + 1];
sort(s1,s2,c,b);
}
public static void sort(String s1,String s2,int c[][],int b[][]) { //该方法实现统计
int n = s1.length();
int m = s2.length();
char array1[] = s1.toCharArray();
char array2[] = s2.toCharArray();
for(int i = 1; i <= n; i++) {
c[i][0] = 0;
}
for(int j = 1; j <= m; j++) {
c[0][j] = 0;
}
for(int i = 1; i <= n; i++) {
for(int j = 1 ; j <= m; j++ ) {
if(array1[i-1] == array2[j-1]) {
c[i][j] = c[i-1][j-1] + 1;
b[i][j] = 1;
}
else if(c[i-1][j] >= c[i][j-1]) {
c[i][j] = c[i-1][j];
b[i][j] = 2;
}
else {
c[i][j] = c[i][j-1];
b[i][j] =3;
}
}
}
System.out.println("最长子序列为:");
print_sort(n, m, array1, b);
}
public static void print_sort(int n,int m,char ch [],int b[][]) { //该方法根据统计函数所得结果实现
//输出
if(n == 0 || m ==0) return;
if(b[n][m] == 1) {
print_sort(n-1, m-1, ch, b);
System.out.print(ch[n-1]);
}
else if(b[n][m] == 2) {
print_sort(n-1, m, ch, b);
}
else
print_sort(n, m -1, ch, b);
}
}
- 编程算法之动态规划之最长公共子序列(java版)
- 动态规划之最长公共子序列(算法导论)
- 算法之最长公共子序列(动态规划)
- 面试(动态规划算法之:最长公共子序列 & 最长公共子串(LCS))
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- (基于Java)算法之动态规划——最长公共子序列
- 动态规划之最长公共子序列算法
- 算法知识之最长公共子序列问题(动态规划)
- 【算法导论】动态规划之最长公共子序列
- 算法导论之动态规划:最长公共子序列
- 动态规划算法之最长公共子序列问题
- 算法动态规划之最长公共子序列
- 算法导论之动态规划:最长公共子序列
- 算法学习之动态规划--最长公共子序列
- 动态规划算法之最长公共子序列问题
- VS2008注释宏的制定
- Android横屏竖屏切换的问题
- 4--10
- variable 'std:ofstream' has initializer but incomplete type
- CGAL使用心得
- 编程算法之动态规划之最长公共子序列(java版)
- iostream.h和iostream 区别
- 嵌入式和就业(转)
- CGAL使用心得(附加说明)
- 深入浅出学习Struts1框架(七):ActionServlet实例化之读取struts-config.xml配置文件
- ubuntu 11.10 添加分辨率
- CGAL中2D Arrangements学习笔记
- 让Chrome左键点击书签栏时打开新标签
- Error parsing XML: unbound prefix