POJ2965
/*
Amazing!
************************************************************
算法原理:
设'+'出现在位置(i,j)
对于除去{(i,j)+(i,:)+(:,j)}的开关每个被翻转2次;
对于{(i,:)+(:,j)}上的开关每个被同行(同列)翻转4次;
对于(i,j)上的开关被翻转7次(在实现过程中是(8-1)次);
这样,偶数次的输出为开关不变化,只有奇数次才会有翻转的效果!
Notice:只对偶数*偶数(此题为4*4)的矩阵成立!
************************************************************
实现:
1)初始化一个handle矩阵,初值为0。
2)在输入的过程中,一旦有'+'(即'closed'状态)
①handle{(i,:)+(:,j)}++;
②handle(i,j)-- ,减去的是二重循环中重复计算的(i,j)位置的值
3)完成输入之后,handle[4][4]上每个位置的计算次数已经确定,
出现奇数次的位置即为所需翻转的位置,出现的总的次数和即为步骤!
Notice:因为所需是输出的总效果