如果将硬币放在一个网格上,并且只能翻转整行或整列,我们如何翻转硬币以获得最小的反面数量。
我尝试使用贪婪解决方案,在该解决方案中,我翻转尾部数量大于头部的行或列,并重复该过程,直到数字没有变化。但是我发现这种方法在某些时候并没有给我一个最佳的解决方案。
HHT
THH
THT
例如,如果硬币像上面那样放置,我按照下面的方式翻转硬币,得到的值是 3,但实际上答案是 2。
1. Flip the row 3
HHT
THH
HTH
2. Then there exists no row or column where the number of tails are greater than that of heads.
3. But if I flip the column 3, row 3, column 1, there exists a solution whose value is 2.
THH
HHT
HHH
所以,我认为上述算法不起作用。我应该使用什么方法和算法?