動的計画思想--最長の共通サブストリング
4378 ワード
NLP ML , , , 。
, ( )
static void Main(string[] args)
{
int max = LcsLen(" q ", " q ");
Console.WriteLine(max);
Console.ReadLine();
}
static int LcsLen(String s1, String s2)
{
int[,] lenLCS = new int[s1.Length + 1, s2.Length + 1];
for (int i = 1; i <= s1.Length; i++)
for (int j = 1; j <= s2.Length; j++)
if (s1[i - 1] == s2[j - 1])
lenLCS[i, j] = 1 + lenLCS[i - 1, j - 1];
else
lenLCS[i, j] = Math.Max(lenLCS[i - 1, j], lenLCS[i, j - 1]);
return lenLCS[s1.Length, s2.Length];
}
public static void main(String[] args) {
int max=lcsLen(" "," ");
System.out.println(max);
}
private static int lcsLen(String s1,String s2){
int[][] lenLCS=new int[s1.length()+1][s2.length()+1];
for (int i = 1; i <= s1.length(); i++)
for (int j = 1; j <= s2.length(); j++)
if(s1.charAt(i-1)==s2.charAt(j-1))
lenLCS[i][j]=1+lenLCS[i-1][j-1];
else
lenLCS[i][j]=Math.max(lenLCS[i-1][j], lenLCS[i][j-1]);
int max=lenLCS[s1.length()][s2.length()];
return max;
}