第一次刷 Special Judge,感覺這道題目純暴力不能過才對,結果強行枚舉居然碾過了。。。。。根據Dis重寫了一個逆向構造的版本,發現思路很好,證明也很犀利,仰慕樓主~

/*
      開一個4X4的Bool數組,開始全為false.如果輸入(i,j)處有"+",將該行該列取反。最后有多少true就是最少步數。輸出為true的坐標就是步驟。

證明:
         要使一個為'+'的符號變為'-',必須其相應的行和列的操作數為奇數;可以證明,如果'+'

位置對應的行和列上每一個位置都進行一次操作,則整個圖只有這一'+'位置的符號改變,其余都不會改變.
      設置一個4*4的整型數組,初值為零,用于記錄每個點的操作數,那么在每個'+'上的行和列的的位置都加1,得到結果模2(因為一個點進行偶數次操作的效果和沒進行操作一樣,這就是樓上說的取反的原理),然后計算整型數組中一的個數即為操作數,一的位置為要操作的位置(其他原來操作數為偶數的因為操作并不發生效果,因此不進行操作)

*/

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