POJ 2695 The Pilots Brothers' refrigerator(神奇的法令)

POJ 2695 The Pilots Brothers' refrigerator(神奇的规律)

转载请注明出处:http://blog.csdn.net/a1dark

分析:如果想要将一个“+”翻转成“-”,那么必然会把对应的行和列上的所有点翻转一次、由于一个点翻偶数次就相当于不翻转、所以我需要统计“+”、然后将对应行和列的值+1、最后统计奇数值的个数、便是要翻转的点、

#include<stdio.h>
int 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;
}