求助 C/C++:简单题 OJ 超时找不到原因

2020-01-19 02:32:30 +08:00
 good1uck
大佬们,帮我看看代码超时的原因,题目是简单难度,两份代码没太大区别,时间复杂度一样,可是一个 3000ms 一个 14ms

OJ(可能要简单地注册一个账号才能用): http://tk.hustoj.com/problem.php?id=1928
不超时版本代码: https://segmentfault.com/n/1330000021618399/raw?token=e7f1f2076ee67c5872775cb23851c0fe

超时版本代码(详细注释): https://segmentfault.com/n/1330000021618396/raw?token=aa9e86325930e98c75c35551c948c62d

没人的话我明天再来问
2276 次点击
所在节点    C++
2 条回复
geelaw
2020-01-19 02:54:04 +08:00
因为第二段代码每个月的天数是错误的,如果其中一个日期不在错误的范围内,则会导致有符号整数加法溢出,从而可能无法停下。实际情况很可能是 d1 在不断增加,直到绕 int 范围一圈。
good1uck
2020-01-19 03:33:01 +08:00
@geelaw 明白了,感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/639035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX