实现最佳性能的一种简单方法是构建一个大表,存储所有可能的(a, b)对的结果。但是,这可能会消耗大量内存,并且对于大的n来说是不实际的
下面是如何使用普通方法优化代码,如下所述。在
1。将显式and用于逻辑表达式
正如评论中所建议的那样,由于and的short circuiting行为,这更具可读性和效率。在我的测试中,仅此更改就将运行时减少60%。在
2。消除冗余条件
由于a和b的范围从1到{},如果a == n**2,那么{}永远无法实现。因此,条件a%n == 0 and a != n**2 and b == a + 1中的a != n**2检查是多余的。第三种情况也是如此。消除它们可以简化这些条件:...
elif a % n == 0 and b == a + 1:
elif (a - 1) % n == 0 and b == a - 1:
...
3。避免在条件下重复计算
注意,上述条件得到改善
a % n == 0 and b == a + 1和{}是abs(a - b) == 1的特例。{cd16>因此可以使用这些条件重写。在
^{pr2}$
还要注意,值abs(a - b)与所有条件相关。因此,可以在检查所有条件之前计算它。随着这种变化,代码变成d = abs(a - b)
if d == 0: return 6
elif d == 1:
if a