$O(n^2)$
왼쪽위부터 비교하며 다르면 주위 3*3 구역을 바꾸어 준다.
#include<cstdio> int n, m, r; char a[50][51], b[50][51]; int main() { scanf("%d %d", &n, &m); for (int i = 0; i < n; i++)scanf("%s", a[i]); for (int i = 0; i < n; i++)scanf("%s", b[i]); for (int i = 0; i < n - 2; i++) { for (int j = 0; j < m - 2; j++) { if (a[i][j] == b[i][j]) continue; for (int k = i; k < i + 3; k++) for (int l = j; l < j + 3; l++) a[k][l] = '1' + '0' - a[k][l]; r++; } } for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (a[i][j] ^ b[i][j]) r = -1; printf("%d", r); return 0; }
댓글 없음 :
댓글 쓰기