最長公共子串行

2021-08-27 04:17:53 字數 2546 閱讀 4141

public class longestcommonsubsequence3 

public static int compute(char str1, char str2)

}system.out.println("substring1:" + new string(str1));

system.out.println("substring2:" + new string(str2));

system.out.print("lcs:");

int i = str1.length, j = str2.length;

string temp = "";

while (i != 0 && j != 0)

else

}for (int k = temp.length() - 1; k >= 0; k--)

system.out.println();

return chess[str1.length][str2.length];

}public int compute(string str1, string str2)

}//***************=

public class longestcommonsubsequence2

public static int compute(char str1, char str2)

}system.out.println("substring1:" + new string(str1));

system.out.println("substring2:" + new string(str2));

system.out.print("lcs:");

int i = 0, j = 0;

while (i < substringlength1 && j < substringlength2)

else if (opt[i + 1][j] >= opt[i][j + 1])

i++;

else

j++;

}system.out.println();

return opt[0][0];

}public int compute(string str1, string str2)

}//********************

package com.lifeibigdata.algorithms.string;

/** * created by lifei on 16/5/25.

*/public class longestcommonsubsequence ;

char y = ;

longestcommonsubsequence lcs = new longestcommonsubsequence();

lcs.printlcs(lcs.lcslength(x, y), x, x.length-1, y.length-1);

}void printlcs(int b,char x,int i,int j)else if(b[i][j] == 2)

printlcs(b,x,i - 1,j);

else

printlcs(b,x,i,j - 1);

}int lcslength(char x,char y)

else if(c[i - 1][j] >= c[i][j - 1])else

}return b;

}}/**

* 滾動陣列只求大小,可以降低空間複雜度,時間複雜度不變

* 求全部的lcs,使用深搜或廣搜

* 求有幾個lcs,即只求lcs數目,計算有多少分支,即2的多少次方

最長公共子串行 最長公共子串

1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...

最長公共子串行 最長公共子串

1.區別 找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。2 最長公共子串 其實這是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公...

最長公共子串 最長公共子串行

子串要求連續 子串行不要求連續 之前的做法是dp求子序列 include include include using namespace std const int inf 0x3f3f3f3f const int mod 1000000007 string s1,s2 int dp 1010 10...