Untitled
unknown
plain_text
a year ago
4.2 kB
10
Indexable
import java.util.HashMap;
class UserSolution {
final char direction[] = { 'r', 'u', 'l', 'd' };
final int[] dx = { 0, -1, 0, 1 };
final int[] dy = { 1, 0, -1, 0 };
boolean[][] visited;
HashMap<String, Integer> map;
int N;
String res;
int[][] board;
void initHM() {
map.put("rdlooo", 0);
map.put("rrrooo", 1);
map.put("dddooo", 1);
map.put("rodloo", 2);
map.put("drdooo", 2);
map.put("rdrooo", 2);
map.put("dldooo", 2);
map.put("ddrooo", 3);
map.put("rroodo", 3);
map.put("rddooo", 3);
map.put("dllooo", 3);
map.put("ddlooo", 3);
map.put("drrooo", 3);
map.put("roddoo", 3);
map.put("rrdooo", 3);
map.put("droloo", 4);
map.put("drodoo", 4);
map.put("rrodoo", 4);
map.put("dlodoo", 4);
map.put("rodlodoo", 5);
map.put("drdooloo", 5);
map.put("drodlooo", 5);
map.put("drrodooo", 5);
map.put("dlodrooo", 5);
map.put("droldooo", 5);
map.put("dllodooo", 5);
map.put("ddddoooo", 6);
map.put("rrrroooo", 6);
map.put("dddroooo", 7);
map.put("rrrooodo", 7);
map.put("rdddoooo", 7);
map.put("dllloooo", 7);
map.put("dddloooo", 7);
map.put("drrroooo", 7);
map.put("rodddooo", 7);
map.put("rrrdoooo", 7);
map.put("dlddoooo", 8);
map.put("rrdroooo", 8);
map.put("ddldoooo", 8);
map.put("rdrroooo", 8);
map.put("drddoooo", 8);
map.put("rodllooo", 8);
map.put("ddrdoooo", 8);
map.put("rroodloo", 8);
map.put("rdldoooo", 9);
map.put("rrdloooo", 9);
map.put("dldroooo", 9);
map.put("rdrolooo", 9);
map.put("drdloooo", 9);
map.put("rrodlooo", 9);
map.put("rdlodooo", 9);
map.put("rdlloooo", 9);
map.put("rroddooo", 10);
map.put("dlloodoo", 10);
map.put("ddrolooo", 10);
map.put("drroodoo", 10);
map.put("drruoooo", 11);
map.put("roddrooo", 11);
map.put("rrdooodo", 11);
map.put("rddloooo", 11);
map.put("rrddoooo", 12);
map.put("ddlloooo", 12);
map.put("ddrroooo", 12);
map.put("rrooddoo", 12);
map.put("drdroooo", 13);
map.put("rodldooo", 13);
map.put("rdrdoooo", 13);
map.put("dldloooo", 13);
map.put("drolodoo", 14);
map.put("dloddooo", 15);
map.put("drollooo", 15);
map.put("ddrodooo", 15);
map.put("rrroodoo", 15);
map.put("ddlodooo", 15);
map.put("drrooloo", 15);
map.put("droddooo", 15);
map.put("rddroooo", 16);
map.put("dlldoooo", 16);
map.put("roddlooo", 16);
map.put("drrdoooo", 16);
}
void DFS(int x, int y, int val) {
visited[x][y] = true;
for (int i = 0; i < 4; i++) {
int nextX = x + dx[i];
int nextY = y + dy[i];
if (nextX >= 0 && nextX < N && nextY >= 0 && nextY < N) {
if (board[nextX][nextY] == val && !visited[nextX][nextY]) {
res += direction[i];
DFS(nextX, nextY, val);
res += 'o';
}
}
}
}
void countBlock(int N, int[][] mBoard, int[] mTetromino, int[] mPentomino) {
this.N = N;
board = mBoard;
visited = new boolean[N][N];
map = new HashMap<String, Integer>();
initHM();
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (!visited[i][j] && mBoard[i][j] != 0) {
res = "";
DFS(i, j, mBoard[i][j]);
if (res.length() == 6)
mTetromino[map.get(res)]++;
else
mPentomino[map.get(res) - 5]++;
}
}
}
}
}Editor is loading...
Leave a Comment