Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.io.*;
- /**
- * Created by roman on 30.03.17.
- */
- public class Solver {
- static int stringLength;
- static int numberOfOpeningBrackets;
- static ArrayList<Integer> openingBrackets;
- static int[][] dp;
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int numberOfTests = scanner.nextInt(); //считываем количество тестов
- for (int i = 0; i < numberOfTests; i++) {
- stringLength = scanner.nextInt() * 2; // длина скобочной последовательности
- numberOfOpeningBrackets = scanner.nextInt(); // количество открывающих скобок
- openingBrackets = new ArrayList<>(numberOfOpeningBrackets);
- for (int j = 0; j < numberOfOpeningBrackets; j++) { //считываем открывающие скобки
- openingBrackets.add(scanner.nextInt());
- }
- //Входные данные для текущего теста считаны, здесь начинается алгоритм решения:
- int[][] dp = new int[stringLength][stringLength + 1]; //создаем наш массив для динамики
- System.out.println(method(0, 0));
- }
- }
- public static int method(int index, int balane) {
- if (index == stringLength) {
- if (balane == 0)
- return 1;
- else
- return 0;
- }
- if (!openingBrackets.contains(index)) {
- if (balane > 0) {
- return method(index + 1, balane - 1) + method(index + 1, balane + 1);
- } else if (balane == 0) {
- return method(index + 1, balane + 1);
- }
- } else {
- return method(index + 1, balane + 1);
- }
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement