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;

}


 

 

你可能感兴趣的:(poj)