Рубрики

Программа на C # для n-го каталонского номера

Каталонские числа представляют собой последовательность натуральных чисел, которая встречается во многих интересных проблемах подсчета, таких как следующие.

1) Подсчитайте количество выражений, содержащих n пар скобок, которые правильно сопоставлены. Для n = 3 возможными выражениями являются ((())), () (()), () () (), (()) (), (() ()).

2) Подсчитайте количество возможных деревьев бинарного поиска с n ключами (см. Это )
Смотрите это для других приложений.

Первые несколько каталонских чисел для n = 0, 1, 2, 3,… являются 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862,…

// Рекурсивная программа на C # для поиска
// каталонский номер

using System;

  

class GFG {

  

    // Рекурсивная функция для поиска

    // каталонский номер

    static int catalan(int n)

    {

        int res = 0;

  

        // Базовый вариант

        if (n <= 1) {

            return 1;

        }

        for (int i = 0; i < n; i++) {

            res += catalan(i)

                   * catalan(n - i - 1);

        }

        return res;

    }

  

    public static void Main()

    {

        for (int i = 0; i < 10; i++)

            Console.Write(catalan(i)

                          + " ");

    }

}

  
// Этот код предоставлен
// нитин митталь.

Выход:

1 1 2 5 14 42 132 429 1430 4862

Решение для динамического программирования
Мы можем заметить, что вышеописанная рекурсивная реализация выполняет много повторяющихся операций (мы можем сделать то же самое, рисуя дерево рекурсии). Поскольку существуют перекрывающиеся подзадачи, мы можем использовать для этого динамическое программирование. Ниже приводится реализация, основанная на динамическом программировании на C ++.

Пожалуйста, обратитесь к полной статье о программе для n-го каталонского номера для более подробной информации!

Рекомендуемые посты:

Программа на C # для n-го каталонского номера

0.00 (0%) 0 votes