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是要改变的,且是要输出的。

keep moving...
原文地址:https://www.cnblogs.com/xxx0624/p/2720407.html