0

我一直在为 SPOJ.com 网站上的一个问题编写解决方案。就是这个: http ://www.spoj.com/problems/MINMOVE/

我的解决方案是为 s+s 创建滚动哈希(如果 s 是输入的完整字符串),这样我就可以获得所有旋转。

这是代码: https ://github.com/vfonic/SPOJ/blob/master/minmove.cpp

我在本地测试,我的代码在以下简单的测试用例上失败了:aaba

它打印的是 0 而不是 3(3 是获得字典最小字符串的旋转次数:aaab)。

我添加了 printf(" "); 行作为h()函数中的第一行,而不是 0,我得到了正确答案:3。

然后我删除了 printf 行并将代码发送到 SPOJ。我的解决方案被接受了。我还在室友的计算机(Ubuntu)上测试了相同的代码(没有 printf),他得到了 3。

我有最新的 OS X Mountain Lion:10.8.4。这是输出g++ --version

i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Copyright (C) 2007 Free Software Foundation, Inc.

有没有人知道为什么我的代码在添加虚拟 printf 时打印正确答案,否则打印错误答案?

4

0 回答 0