转载请注明出处:http://blog.csdn.net/a1dark
分析:如果想要将一个“+”翻转成“-”,那么必然会把对应的行和列上的所有点翻转一次、由于一个点翻偶数次就相当于不翻转、所以我需要统计“+”、然后将对应行和列的值+1、最后统计奇数值的个数、便是要翻转的点、
#includeint mpt[5][5];int main(){ char ch; for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ scanf("%c",&ch); if(ch=='+'){ mpt[i][j]++; for(int k=1;k<=4;k++){ mpt[i][k]++; mpt[k][j]++; } } } getchar(); } int step=0; for(int i=1;i<=4;i++) for(int j=1;j<=4;j++) if(mpt[i][j]%2!=0) step++; printf("%d\n",step); for(int i=1;i<=4;i++) for(int j=1;j<=4;j++) if(mpt[i][j]%2!=0) printf("%d %d\n",i,j); return 0;}