** 覆盖骨牌数问题**
问题具体描述:
你有一块棋盘,棋盘上有一些格子已经坏掉了。你还有无穷块大小为1 * 2的多米诺骨牌,你想把这些骨牌不重叠地覆盖在完好的格子上,请找出你最多能在棋盘上放多少块骨牌?这些骨牌可以横着或者竖着放。
输入:n, m代表棋盘的大小;broken是一个b * 2的二维数组,其中每个元素代表棋盘上每一个坏掉的格子的位置。
输出:一个整数,代表最多能在棋盘上放的骨牌数。
(Python语言与人工智能入门-课程设计的小作业)
具体代码如下:
from typing import List
class Solution(object):
def domino(self,n, m, broken):
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
match = [-1] * n * m
#存储匹配的时候用id比较方便,寻找邻点使用坐标系方便
pos2id = lambda y, x:y * m + x
id2pos = lambda id:[id // m, id % m]
#匈牙利求解最大匹配数
def edmon_match