我一直在为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(“”);作为first line in 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时,有没有人有任何想法为什么我的代码打印正确的答案,否则错误的答案?