##POJ 2965-The Pilots Brothers’ refrigerator
题目大意:
题目中给出的状态图包括’+’,’-‘,要求将其全部翻转成’-‘,每次翻转一个位置,那么它所在的行和列都要翻转
问最小翻转次数,同时输出翻转路径。
题解:
这道题和POJ 1753相似,但这里借鉴到了更好的算法:
情况:
1、这道题不存在impossible的情况,说明最多把所有‘+’都改一次可以实现全部符号为‘-’。
2、这道题的关键在于如何改变‘+’,而不改变与它关联的行和列。
解决:
实现1:用一个二维数组初始化为0,’+‘的位置记为1,接下来依次改变’+‘的位置并用它记录矩阵各位置的改动次数,最后对2取模。/ 当某位置最后的改动次数为偶数,对2取模为0,说明该位置同初始情况相比没有改变,不需要改动 / 最后只需搜索数组中奇数的个数就是答案。
实现2:思路同上,具体操作改为用bool型数组记录改动次数,最后找到值为true的数量就是答案。
1 |
|