第一次刷 Special Judge,感觉这道题目纯暴力不能过才对,结果强行枚举居然碾过了。。。。。根据Dis重写了一个逆向构造的版本,发现思路很好,证明也很犀利,仰慕楼主~

/*
      开一个4X4的Bool数组,开始全为false.如果输入(i,j)处有"+",将该行该列取反。最后有多少true就是最少步数。输出为true的坐标就是步骤。

证明:
         要使一个为'+'的符号变为'-',必须其相应的行和列的操作数为奇数;可以证明,如果'+'

位置对应的行和列上每一个位置都进行一次操作,则整个图只有这一'+'位置的符号改变,其余都不会改变.
      设置一个4*4的整型数组,初值为零,用于记录每个点的操作数,那么在每个'+'上的行和列的的位置都加1,得到结果模2(因为一个点进行偶数次操作的效果和没进行操作一样,这就是楼上说的取反的原理),然后计算整型数组中一的个数即为操作数,一的位置为要操作的位置(其他原来操作数为偶数的因为操作并不发生效果,因此不进行操作)

*/

 1#include<cstdio>
 2#include<cstring>