POJ2965+枚举

View Code
 1 #include<cstdio>

 2 #include<cstring>

 3 #define N 4

 4 int map[N+1][N+1];

 5 int main(){

 6     int i,j,k,ans;

 7     char c;

 8     memset(map,0,sizeof(map));

 9     ans=0;

10     for(i=0;i<N;i++){

11         for(j=0;j<N;j++){

12             scanf("%c",&c);

13             if(j==3)getchar();

14             if(c=='+'){

15                 map[i][j]++;

16                 for(k=0;k<N;k++){

17                     map[k][j]++;

18                     map[i][k]++;

19                 }

20             }

21         }

22     }

23     for(i=0;i<N;i++){

24         for(j=0;j<N;j++){

25             if(map[i][j]%2==1)ans++;

26         }

27     }

28     printf("%d\n",ans);

29     for(i=0;i<N;i++){

30         for(j=0;j<N;j++){

31             if(map[i][j]%2==1)

32                 printf("%d %d\n",i+1,j+1);

33         }

34     }

35     return 0;

36 }

首先,明白一点:对于图中的一个‘+’,钥匙的它变为‘-’而又不影响其他的handle,只要改变和‘+’同一行同一列的handle。。。

结果如果map[i][j]是奇数的话,说明这个handle是要改变的,且是要输出的。

你可能感兴趣的:(poj)