&& isRangeEqual(x + bottoml1, y + bottoml2)) { x++; y++; && isRangeEqual(x - 1 + bottoml1, y - 1 + bottoml2)) { x--; y--; int[] most_progress = findMostProgress(M, N, limit, V);
int d = find_middle_snake(bottoml1, topl1, bottoml2, topl2, V, snake); setLcs(startx + i, starty + i); + lcs_rec(bottoml1, startx - 1, bottoml2, starty - 1, V, snake) + lcs_rec(startx + len, topl1, starty + len, topl2, V, snake); } else if (d == 1) { setLcs(bottoml1 + i, bottoml2 + i);
int length1 = getLength1(); int length2 = getLength2(); if (length1 == 0 || length2 == 0) { length = 0; initializeLcs(length1); int max = Math.min(length1, length2); for (forwardBound = 0; forwardBound < max && isRangeEqual(forwardBound, forwardBound); forwardBound++) { setLcs(forwardBound, forwardBound); && isRangeEqual(backBoundL1, backBoundL2)) { setLcs(backBoundL1, backBoundL2); backBoundL1--; backBoundL2--; - backBoundL1 - 1 + lcs_rec(forwardBound, backBoundL1, forwardBound, backBoundL2, new int[2][length1 + length2 + 1], new int[3]);
int d = find_middle_snake(bottoml1, topl1, bottoml2, topl2, V, snake); setLcs(startx + i, starty + i); worked(subMonitor, 1); + lcs_rec(bottoml1, startx - 1, bottoml2, starty - 1, V, snake, subMonitor) + lcs_rec(startx + len, topl1, starty + len, topl2, V, snake, subMonitor); } else if (d == 1) { setLcs(bottoml1 + i, bottoml2 + i); worked(subMonitor, 1);
int d = find_middle_snake(bottoml1, topl1, bottoml2, topl2, V, snake); setLcs(startx + i, starty + i); worked(subMonitor, 1); + lcs_rec(bottoml1, startx - 1, bottoml2, starty - 1, V, snake, subMonitor) + lcs_rec(startx + len, topl1, starty + len, topl2, V, snake, subMonitor); } else if (d == 1) { setLcs(bottoml1 + i, bottoml2 + i); worked(subMonitor, 1);
int length1 = getLength1(); int length2 = getLength2(); if (length1 == 0 || length2 == 0) { length = 0; initializeLcs(length1); int max = Math.min(length1, length2); for (forwardBound = 0; forwardBound < max && isRangeEqual(forwardBound, forwardBound); forwardBound++) { setLcs(forwardBound, forwardBound); worked(subMonitor, 1); && isRangeEqual(backBoundL1, backBoundL2)) { setLcs(backBoundL1, backBoundL2); backBoundL1--; backBoundL2--; worked(subMonitor, 1); - backBoundL1 - 1 + lcs_rec(forwardBound, backBoundL1, forwardBound, backBoundL2, new int[2][length1 + length2 + 1], new int[3], subMonitor);
int d = find_middle_snake(bottoml1, topl1, bottoml2, topl2, V, snake); setLcs(startx + i, starty + i); + lcs_rec(bottoml1, startx - 1, bottoml2, starty - 1, V, snake) + lcs_rec(startx + len, topl1, starty + len, topl2, V, snake); } else if (d == 1) { setLcs(bottoml1 + i, bottoml2 + i);
&& isRangeEqual(x + bottoml1, y + bottoml2)) { x++; y++; && isRangeEqual(x - 1 + bottoml1, y - 1 + bottoml2)) { x--; y--; int[] most_progress = findMostProgress(M, N, limit, V);
int length1 = getLength1(); int length2 = getLength2(); if (length1 == 0 || length2 == 0) { length = 0; initializeLcs(length1); int max = Math.min(length1, length2); for (forwardBound = 0; forwardBound < max && isRangeEqual(forwardBound, forwardBound); forwardBound++) { setLcs(forwardBound, forwardBound); && isRangeEqual(backBoundL1, backBoundL2)) { setLcs(backBoundL1, backBoundL2); backBoundL1--; backBoundL2--; - backBoundL1 - 1 + lcs_rec(forwardBound, backBoundL1, forwardBound, backBoundL2, new int[2][length1 + length2 + 1], new int[3]);
&& isRangeEqual(x + bottoml1, y + bottoml2)) { x++; y++; && isRangeEqual(x - 1 + bottoml1, y - 1 + bottoml2)) { x--; y--; int[] most_progress = findMostProgress(M, N, limit, V);
int length1 = getLength1(); int length2 = getLength2(); if (length1 == 0 || length2 == 0) { length = 0; initializeLcs(length1); int max = Math.min(length1, length2); for (forwardBound = 0; forwardBound < max && isRangeEqual(forwardBound, forwardBound); forwardBound++) { setLcs(forwardBound, forwardBound); worked(subMonitor, 1); && isRangeEqual(backBoundL1, backBoundL2)) { setLcs(backBoundL1, backBoundL2); backBoundL1--; backBoundL2--; worked(subMonitor, 1); - backBoundL1 - 1 + lcs_rec(forwardBound, backBoundL1, forwardBound, backBoundL2, new int[2][length1 + length2 + 1], new int[3], subMonitor);
&& isRangeEqual(x + bottoml1, y + bottoml2)) { x++; y++; && isRangeEqual(x - 1 + bottoml1, y - 1 + bottoml2)) { x--; y--; int[] most_progress = findMostProgress(M, N, limit, V);