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...