Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 11078 | Accepted: 7074 |
2 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 1 0 1 0 0
PUZZLE #1 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 PUZZLE #2 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1
1 //2017-08-01 2 #include <cstdio> 3 #include <iostream> 4 #include <cstring> 5 #include <algorithm> 6 7 using namespace std; 8 9 10 bool grid[20][20], tmp[20][20]; 11 int n, m, ans[20], res[20]; 12 13 void flip(int x, int y) 14 { 15 tmp[x][y] = !tmp[x][y]; 16 if(x-1>=0)tmp[x-1][y] = !tmp[x-1][y]; 17 if(y-1>=0)tmp[x][y-1] = !tmp[x][y-1]; 18 tmp[x+1][y] = !tmp[x+1][y]; 19 tmp[x][y+1] = !tmp[x][y+1]; 20 } 21 22 void solve() 23 { 24 int penn, minflip = 0x3f3f3f3f; 25 bool fg = false; 26 for(int i = 0; i < (1<<m); i++) 27 { 28 for(int x = 0; x < n; x++) 29 for(int y = 0; y < m; y++) 30 tmp[x][y] = grid[x][y]; 31 for(int y = 0; y < m; y++) 32 if(i&(1<<y)) 33 flip(0, m-1-y); 34 ans[0] = i; 35 for(int x = 1; x < n; x++){ 36 penn = 0; 37 for(int y = 0; y < m; y++){ 38 if(tmp[x-1][y]){ 39 flip(x, y); 40 penn += (1<<(m-1-y)); 41 } 42 } 43 ans[x] = penn; 44 } 45 bool ok = true; 46 for(int j = 0; j < m; j++) 47 if(tmp[n-1][j]) 48 ok = false; 49 if(ok){ 50 fg = true; 51 int cnt = 0; 52 for(int j = 0; j < n; j++){ 53 for(int pos = 0; pos < m; pos++) 54 if(ans[j]&(1<<(m-1-pos)))cnt++; 55 } 56 if(cnt < minflip){ 57 minflip = cnt; 58 for(int k = 0; k < n; k++) 59 res[k] = ans[k]; 60 } 61 } 62 } 63 if(!fg)cout<<"IMPOSSIBLE"<<endl; 64 else{ 65 for(int j = 0; j < n; j++){ 66 for(int pos = 0; pos < m; pos++) 67 if(pos == m-1)cout<<(res[j]&(1<<(m-1-pos))?1:0)<<endl; 68 else cout<<(res[j]&(1<<(m-1-pos))?1:0)<<" "; 69 } 70 } 71 } 72 73 int main(){ 74 int T; 75 cin>>T; 76 for(int kase = 1; kase <= T; kase++){ 77 n = 5; 78 m = 6; 79 for(int i = 0; i < n; i++) 80 for(int j = 0; j < m; j++) 81 cin>>grid[i][j]; 82 cout<<"PUZZLE #"<<kase<<endl;; 83 solve(); 84 } 85 86 return 0; 87 }
POJ1222(SummerTrainingDay01-E)
原文:http://www.cnblogs.com/Penn000/p/7271909.html