这是我计算女王对角线所有可能移动的函数:
def dia(n, r_q, c_q, obs):
ans = 0
# up right
cnt = 1
while cnt + r_q <= n and cnt + c_q <= n:
if [cnt + r_q, cnt + c_q] in obs:
break
ans += 1
cnt += 1
# down left
cnt = 1
while r_q - cnt >= 1 and c_q - cnt >= 1:
if [r_q - cnt, c_q - cnt] in obs:
break
ans += 1
cnt += 1
# left up
cnt = 1
while r_q - cnt >= 1 and c_q + cnt <= n:
if [r_q - cnt, c_q + cnt] in obs:
break
print([r_q - cnt, c_q + cnt])
ans += 1
cnt += 1
# right down
cnt = 1
while r_q + cnt <= n and c_q - cnt >= 1:
if [r_q + cnt, c_q - cnt] in obs:
break
print([r_q + cnt, c_q - cnt])
ans += 1
cnt += 1
return ans
参数是:
n
板尺寸,即n=8
表示它是 8x8 板。r_q
皇后区,c_q
女王专栏,obs
位于女王对角线上的所有障碍物。
有时它不能提供正确数量的可能移动。
我缺少什么,如何修复或找到更好的此功能实现?