我已經在C#
中編寫了下面的代碼,用於獲取兩個使用的文本中最長的公共子序列的長度,但它不適用於大字符串。你可以幫我嗎。我很困惑。我如何找到兩個大字符串之間的lcs長度
public Form1()
{
InitializeComponent();
}
public int lcs(char[] s1, char[] s2, int s1size, int s2size)
{
if (s1size == 0 || s2size == 0)
{
return 0;
}
else
{
if (s1[s1size - 1] == s2[s2size - 1])
{
return (lcs(s1, s2, s1size - 1, s2size - 1) + 1);
}
else
{
int x = lcs(s1, s2, s1size, s2size - 1);
int y = lcs(s1, s2, s1size - 1, s2size);
if (x > y)
{
return x;
}
else
return y;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
string st1 = textBox2.Text.Trim(' ');
string st2 = textBox3.Text.Trim(' ');
char[] a = st1.ToCharArray();
char[] b = st2.ToCharArray();
int s1 = a.Length;
int s2 = b.Length;
textBox1.Text = lcs(a, b, s1, s2).ToString();
}
多大影響你?爲什麼'c'標籤? –
一個正常的段落。 – ilia7
使用'遞歸函數'原因發生這個問題的朋友,是否有可能不使用遞歸函數? – Hamidreza