第一次刷 Special Judge,感覺這道題目純暴力不能過才對(duì),結(jié)果強(qiáng)行枚舉居然碾過了。。。。。根據(jù)Dis重寫了一個(gè)逆向構(gòu)造的版本,發(fā)現(xiàn)思路很好,證明也很犀利,仰慕樓主~

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

證明:
         要使一個(gè)為'+'的符號(hào)變?yōu)?-',必須其相應(yīng)的行和列的操作數(shù)為奇數(shù);可以證明,如果'+'

位置對(duì)應(yīng)的行和列上每一個(gè)位置都進(jìn)行一次操作,則整個(gè)圖只有這一'+'位置的符號(hào)改變,其余都不會(huì)改變.
      設(shè)置一個(gè)4*4的整型數(shù)組,初值為零,用于記錄每個(gè)點(diǎn)的操作數(shù),那么在每個(gè)'+'上的行和列的的位置都加1,得到結(jié)果模2(因?yàn)橐粋€(gè)點(diǎn)進(jìn)行偶數(shù)次操作的效果和沒進(jìn)行操作一樣,這就是樓上說的取反的原理),然后計(jì)算整型數(shù)組中一的個(gè)數(shù)即為操作數(shù),一的位置為要操作的位置(其他原來操作數(shù)為偶數(shù)的因?yàn)椴僮鞑⒉话l(fā)生效果,因此不進(jìn)行操作)

*/

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