比python更高级的语言 j_算法X Python实现

我在一个未维护的旧网页上找到了算法X的python实现。它工作得很漂亮。该代码非常简洁,没有注释。有一件我不掌握的东西。我知道它有效,但是我不知道如何或为什么。希望python程序员比我自己更高级可以提供帮助。

在下面的代码中,“选择”被调用,但是返回值发生了什么。此外,“选择”是否会更改X中的值(即X.pop(j))?是不是“选择”被传递了X的副本?

这段代码:

X, Y = exact_cover(X, Y)

for i, row in enumerate(grid):

for j, n in enumerate(row):

if n:

select(X, Y, (i, j, n))

for solution in solve(X, Y, []):

for (r, c, n) in solution:

grid[r][c] = n

yield grid

调用此函数:

def select(X, Y, r):

cols = []

for j in Y[r]:

for i in X[j]:

for k in Y[i]:

if k != j:

X[k].remove(i)

cols.append(X.pop(j))

return cols

车手:Ali Alisaf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值