【发布时间】:2011-12-08 21:25:41
【问题描述】:
我正在使用 Rabin–Karp 算法来检查任意两个源代码文件的抄袭情况 所以首先我简单地在c#中实现它的算法,但它的代码在空间O(p)中平均和最佳情况下的运行时间是O(n+m),但最坏情况下的时间是O(nm)。
public void plagiarism(string [] file1, string [] file2)
{
int percent = 0;
for (int i = 0; i <(file1.Length - file2.Length +1); i++)
{
for (int j = 0; j < file1.Length; j++)
{
if (file1[i + j - 1] != file2[j])
{
}
percent++;
Console.WriteLine(percent);
}
Console.WriteLine("not copied");
}
}
那么如何通过使用滚动哈希函数来提高效率,因为这比这更好..
【问题讨论】:
-
你试过什么?换句话说,你的问题到底是什么?您发布了您想使用“滚动哈希函数”..好的..您如何尝试将其转换为那个?你到底遇到了什么问题?
-
问题是我使用了简单的 robin 算法来检查字符串匹配,但效率不高,所以我想在其中实现滚动哈希函数以提高效率,但是如何??
-
让我们从一些基础开始:问题是您不知道如何实现“滚动哈希函数”还是您不知道它是什么?
-
当心,只需重命名变量和函数,您的算法就不会检测到抄袭
标签: c# algorithm data-structures rabin-karp