SRM 655 Div. 1 Easy: BichromePainting (誤答)
嘘解法
左端から順番に見て、お手本に合うように塗っていき、最終形がお手本と同じになっていれば良いと思った(違った)。
誤答コード
public class BichromePainting { public String isThatPossible(String[] board, int k) { String YES = "Possible"; String NO = "Impossible"; int N = board.length; boolean[][] isBlack = new boolean[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (board[i].charAt(j) == 'B') { isBlack[i][j] = true; } } } boolean[][] isPainted = new boolean[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (isPainted[i][j] != isBlack[i][j]) { int r = Math.min(i, N - k); int c = Math.min(j, N - k); for (int l = r; l < r + k; l++) { for (int m = c; m < c + k; m++) { isPainted[l][m] = isBlack[i][j]; } } } } } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (isPainted[i][j] != isBlack[i][j]) { return NO; } } } return YES; } }
感想
本番でできなかったのつらすぎて震える。