标签:
2 3 yyy yyy yyy 5 wwwww wwwww wwwww wwwww wwwww
0 15
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 using namespace std; 5 6 int t = 0; 7 int n = 0; 8 char col[20]; 9 bool c[20][20] = {0}; 10 bool colored[20][20] = {0}; 11 bool swit[20][20] = {0}; 12 13 void changeswit(int a, int b) 14 { 15 colored[a][b] = !colored[a][b]; 16 colored[a - 1][b] = !colored[a - 1][b]; 17 colored[a + 1][b] = !colored[a + 1][b]; 18 colored[a][b - 1] = !colored[a][b - 1]; 19 colored[a][b + 1] = !colored[a][b + 1]; 20 } 21 22 23 int main() 24 { 25 scanf("%d", &t); 26 for(int ti = 1; ti <= t; ++ti) 27 { 28 int sum = 0; 29 scanf("%d", &n); 30 int min = n * n + 1; 31 for(int i = 1; i <= n; ++i) 32 { 33 scanf("%s", col); 34 for(int j = 1; j <= n; ++j) 35 { 36 if(col[j - 1] == ‘y‘) c[i][j] = 1; 37 else c[i][j] = 0; 38 } 39 } 40 for(int k = 0; k < pow(2.0, n); k++) 41 { 42 for(int i = 1; i <= n; i++) 43 for(int j = 1; j <= n; j++) 44 { 45 colored[i][j] = c[i][j]; 46 } 47 for(int i = 1; i <= n; i++) 48 { 49 swit[1][i] = (k>>(i - 1)) & 1; 50 if(swit[1][i]) 51 { 52 changeswit(1, i); 53 sum++; 54 } 55 } 56 for(int i = 2; i <= n; i++) 57 for(int j = 1; j <= n; j++) 58 if(!colored[i - 1][j]) 59 { 60 swit[i][j] = 1; 61 sum++; 62 changeswit(i, j); 63 } 64 int mark = 0; 65 for(int j = 1; j <= n; j++) 66 if(!colored[n][j]) mark = 1; 67 if(!mark && sum < min) min = sum; 68 sum = 0; 69 } 70 if(min != n*n + 1) printf("%d\n",min); 71 else printf("inf\n"); 72 } 73 return 0; 74 }
标签:
原文地址:http://www.cnblogs.com/Konayuki2015/p/4514210.html