通过跳跃检查在 Python 中是否可以到达位置 n 的程序
假设从 1 到 n 有一个数轴。 首先我们在位置 0,跳一步到 1,然后跳两步到达位置 3,然后跳三个位置到达位置 6,以此类推。 我们必须检查是否可以保持这个状态,达到位置 n 。
所以,如果输入如下:n = 21,则输出为 True,因为 1+2+3+4+5+6=21。
要解决这个问题,我们将遵循以下步骤:
- j := (1+sqrt(1+8*n)) / 2
- 如果 |j- j 的整数部分 | <= 0,则
- 返回 True
- 否则,返回 False
示例
让我们来看一个更好的实现以获得更好的理解 –
from math import sqrt
def solve(n):
j=(1+sqrt(1+8*n))/2
if abs(j-int(j))<=0:
return True
else:
return False
n = 21
print(solve(n))
输入
21
输出
True