我的任务有问题
我给的NxN矩阵只有1和0在每个步骤中,我生成一行中的随机1,该1的一列被关闭。我需要找到从0到1的最小更改数,以确保每行都能有一个1。
例如
00个
00个
我需要两次改变
10个
01年
或者
000个
一百一十
000个
我需要三个改变
110个
110个
001号
所以我可以选择第一排的第一个或第二个1。第一排或第二排在第一排选择和第三排1。
最佳答案
把你的问题看作是一个二分图,图中左边有工人,右边有工作,边上有工人,如果工人能做工作。
然后计算工作人员的最大匹配(如the Hopcroft-Karp algorithm)。
如果匹配的大小是x,那么我们已经成功地将x个工人与x个作业配对然后,我们需要花n-x的钱来培训不匹配的工人去做不匹配的工作。