清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
def guess(ku, i, v, b = 1): affects = [] for j in range(b, 81): if (i / 9 == j / 9 \ or i % 9 == j % 9 \ or (i / 9 / 3 * 3 == j / 9 / 3 * 3 \ and i % 9 / 3 * 3 == j % 9 / 3 * 3)) \ and v in ku[j]: ku[j].remove(v) affects.append(j) ku[i].clear() ku[i].add(v) return affects def bfs(ku, i): clone = ku[i].copy() for v in clone: affects = guess(ku, i, v, i + 1) if all([len(c) == 1 for c in ku]) or all(ku) and i < 81 and bfs(ku, i + 1): return True else: for j in affects: ku[j].add(v) ku[i] = clone ku = [set(range(1, 10)) for i in range(81)] s = '040300000010608000050000007065910872090070003002084601906735018503400029174890365' for i in range(81): v = int(s[i]) if 1 <= v <= 9: guess(ku, i, v) for i in range(81): if len(ku[i]) > 1: bfs(ku, i) break print ''.join(str(next(iter(c)) if len(c) == 1 else 0) for c in ku) # => 249357186317628954658149237465913872891276543732584691926735418583461729174892365