0

更新 嗯,我有一个更新。显然,我的巨大数组“unsigned long long fhash[105][100555]”没有在 vC++ 中自动初始化为零......当我这样做 = {0} 时它起作用了。它不应该自动初始化吗?

我正在做竞赛编程,我通常在学校/ideone 等使用 g++ 编译......但我必须使用 VC++ 2010 编译器。

也就是说,我有代码来做多项式滚动哈希(就像在 Rabin-Karp 中使用的那样),但是这些编译器上的溢出是否不同?

代码在这里: http: //pastebin.com/UFdpwHCt(散列在第 67 行左右)

输出在这里:http: //i.imgur.com/KCcvI.png

为什么“bhash”在两个编译器之间是相等的,而“fhash”却不是?它们使用相同的方法进行散列...在 G++-3 输出中,“fhash”和“bhash”输出是相同的(它们应该是),但在 VC++-10 输出中,“fhash”和“bhash” “不一样...

我正在使用溢出让它自然地修改自己,以加快执行速度,而不是用大素数显式修改它。

4

1 回答 1

0

不是问题。问题是它没有被初始化为零。使用 memset 修复它。

于 2012-11-05T23:05:51.570 回答