昨天在TopCoder上做了Google Code Jam China 2005的考题。虽然题都不是太难,毕竟才是海选哈,题目类型一个是排列组合类问题,一个是搜索类问题。不过要在1小时内调试并提交两个算法题的代码,对于我这样离开学校工作了几年的人,还是挺不容易的。结果只完成了一道题,没有了继续参加后续比赛的资格。
由于TopCoder严厉声明不能私自转载它的考题,那么我贴出我自己做的试题的答案应该没有什么问题吧?下面这是750 Points那个搜索问题的C#版代码:
这个题开始被题目搞得有点郁闷,也就是被它的sample input误导了一下,它的那个4*3*3*3那个示例太迷惑人了:(。上面这个解法在google 1G个路径搜索限制下,在P4 2.4的机器上,最大需要大约40s的运行时间,这样的Performance似乎太磕碜了。
于是后来又用C++写了一遍,效率也没有什么提高,而且比C#版还略微底些
上面代码中的示例有111,478,680个paths,C#版和C++版分别耗时:2671.875ms和4281ms
硬件:P4 2.4G 512M
软件:WinXP SP2, VS.NET 2005