SRM311 div1 easy
全く同じ領域を二度もflipさせることはなさそうだ、ということに気付けば、どん欲法でやっていけば良さそうということが分かる.flipする順序は関係ないので、[0, 0]から順番にtraverseしていけばよさそう.
っていうのがぱって浮かんだらな〜。複雑そうだったのでパニクった.
int minPushes(vector <string> a, vector <string> b) { if(a == b) return 0; int ans = 0; int row = a.size(); int col = a[0].length(); for(int i = 0; i < row-2; i++) { for(int j = 0; j < col-2; j++) { if(a[i][j] != b[i][j]) { //transform for(int x = 0; x < 3; x++) { for(int y = 0; y < 3; y++) { a[i+x][j+y] = (a[i+x][j+y] == '0') ? '1' : '0'; } } ans++; } //end if } } //end for return (ans == 0) ? -1 : ans; }