最长公共子序列
来源:互联网 发布:windows 一键还原 编辑:程序博客网 时间:2024/04/30 23:29
public class Zuichanggonggongzixulie {static void pirntlcs(char[] a,char[] b){int s = b.length+1;int e = a.length+1;int[][]temp = new int[s][e];for(int i=0;i<s;i++){for(int j=0;j<e;j++){temp[i][j]=0;}}for(int i=1;i<s;i++){for(int j=1;j<e;j++){if(b[i-1]==a[j-1]){temp[i][j]=temp[i-1][j-1]+1;//一定要弄明白什么意思!}else if(b[i-1]!=a[j-1]){if(temp[i-1][j]>=temp[i][j-1]){temp[i][j]=temp[i-1][j];}else{temp[i][j]=temp[i][j-1];}}}}System.out.println(temp[s-1][e-1]);printpath(b,temp,s-1,e-1);for(int i=0;i<s;i++){for(int j=0;j<e;j++){System.out.print(temp[i][j]);if(j==e-1){System.out.println();}}}}private static void printpath(char[] a,int[][] temp,int s,int e) {if(s==0||e==0){return;}if(temp[s-1][e]==temp[s][e-1]&&temp[s-1][e]==temp[s-1][e-1]){printpath(a,temp, s-1, e-1);System.out.print(a[s-1]);}else if(temp[s-1][e]>=temp[s][e-1]){printpath(a,temp, s-1, e);}else if(temp[s-1][e]<temp[s][e-1]){printpath(a,temp, s, e-1);}}public static void main(String[] args) {char[] a={'b','d','c','a','b','a'};char[] b={'a','b','c','b','d','a','b'};pirntlcs(a,b);}}
0 0
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列...
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- Configuring HugePages for Oracle onLinux
- 雷神开发超级听觉系统
- Android使用Displaymetrics类获取一下手机屏幕中的一些信息,获取屏幕分辨率
- JAVA 连接MSYQL
- [android基础]getContentResolver()
- 最长公共子序列
- 如何查看端口占用情况
- Hander , HandlerThread 用法
- JAVA防止JS html 注入
- linux shell(二)shell 中的变量
- 第二章作业
- iOS实现一个颜色渐变的弧形进度条
- GOOGLE DDOS生成动态url
- Android入门:深入学习理解 Handler HandlerThread AsyncQueryHandler 三者的关系