poj 2965详解

这道题目我是一次性A的,关键性是在于理解题意,并且知道当只有一个+  时候是7次操作;
这7次是表示这个元素的横竖的7个元素都要翻转,注意本身的次数;
之后的话就是把每一个+号认为上叙,就是把其他看做是-,对于每一个+这样处理;
最后模2,因为每一个元素翻转n次,若n==2或者n==4,这样翻转一个元素就是没有作用的;
最后求和,冷的手都僵硬了,哈哈!!!待会买一个暖手宝来奖励自己,完全靠自己的理解;
自己好好理解,不要老是看别人的解答,只要看别人的思路就行了,这样就知道了一类题目了

#include< stdio.h>

#define maxn 5
int sum;

int main()
{
    int a[maxn][maxn];
    int c[maxn][maxn];
    char b[5];
    for(int i=0;i<=3;i++)
    {
        scanf("%s",b);
        for(int j=0; j<=3;j++)
        {
            if(b[j]=='+')
                a[i][j]=1;
            else
                a[i][j]=0;
            c[i][j]=0;
        }
    }
    for(int i=0;i<4;i++)
    {
        for(int j=0;j <4;j++)
        {
            if(a[i][j]!=0)
            {
                for(int k=0;k<4;k++)
                    c[i][k]++;
                for(int k=0;k<4;k++)
                {
                    if(i!=k)
                        c[k][j]++;
                }

            }
        }
    }
    for(int i=0;i<4;i++)
    {
        for(int j=0;j< 4;j++)
        {
            c[i][j]=c[i][j]%2;
            sum+=c[i][j];
        }
    }
    printf("%d\n",sum);
    for(int i=0;i<4;i++)
    {
        for(int j=0;j< 4;j++)
        {
            if(c[i][j]!=0)
                printf("%d%d\n",i+1,j+1);
        }
    }
    return 0;
}





你可能感兴趣的:(poj 2965详解)