Рубрики

C # Программа для подсчета путей достижения н / й лестницы

Есть n лестниц, человек, стоящий внизу, хочет достичь вершины. Человек может подняться на 1 или 2 ступеньки одновременно. Подсчитайте количество способов, которыми человек может достичь вершины.

Рассмотрим пример, показанный на диаграмме. Значение n равно 3. Есть 3 способа достичь вершины. Диаграмма взята из пазлов Легче Фибоначчи

C #

// C # программа для подсчета
// количество способов достичь
// н ая лестница

using System;

  

class GFG {

    // Простая рекурсивная

    // программа для поиска n

    // число Фибоначчи

    static int fib(int n)

    {

        if (n <= 1)

            return n;

        return fib(n - 1) + fib(n - 2);

    }

  

    // Возвращает количество способов

    // чтобы добраться до лестницы

    static int countWays(int s)

    {

        return fib(s + 1);

    }

  

    // Код драйвера

    static public void Main()

    {

        int s = 4;

        Console.WriteLine("Number of ways = " + countWays(s));

    }

}

  
// Этот код добавлен
// от akt_mit

Выход:

Number of ways = 5

Временная сложность вышеописанной реализации является экспоненциальной (золотое сечение повышено до степени n). Он может быть оптимизирован для работы за время O (Logn) с использованием ранее обсужденных оптимизаций функции Фибоначчи .

C #

// C # программа для подсчета путей достижения
// н-й ступень

using System;

  

class GFG {

  

    // Рекурсивная функция, используемая

    // countWays

    static int countWaysUtil(int n, int m)

    {

        if (n <= 1)

            return n;

        int res = 0;

  

        for (int i = 1; i <= m && i <= n; i++)

            res += countWaysUtil(n - i, m);

        return res;

    }

  

    // Возвращает количество способов достижения

    // s'th лестница

    static int countWays(int s, int m)

    {

        return countWaysUtil(s + 1, m);

    }

  

    / * Программа драйвера для проверки вышеуказанной функции * /

    public static void Main()

    {

        int s = 4, m = 2;

        Console.Write("Number of ways = "

                      + countWays(s, m));

    }

}

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

Выход:

Number of ways = 5

C #

// C # программа для подсчета числа
// способов добраться до лестницы, когда
// человек может подняться на 1, 2, ..м
// лестницы за один раз

using System;

class GFG {

  

    // рекурсивная функция

    // используется countWays

    static int countWaysUtil(int n, int m)

    {

        int[] res = new int[n];

        res[0] = 1;

        res[1] = 1;

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

            res[i] = 0;

            for (int j = 1; j <= m && j <= i; j++)

                res[i] += res[i - j];

        }

        return res[n - 1];

    }

  

    // Возвращает количество способов

    // чтобы добраться до лестницы

    static int countWays(int s, int m)

    {

        return countWaysUtil(s + 1, m);

    }

  

    // Код драйвера

    public static void Main()

    {

        int s = 4, m = 2;

        Console.WriteLine("Number of ways = " + countWays(s, m));

    }

}

  
// Этот код предоставлен anuj_67.

Выход:

Number of ways = 5

Пожалуйста, обратитесь к полной статье о способах подсчета, чтобы добраться до n-й ступени, чтобы узнать больше!

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

C # Программа для подсчета путей достижения н / й лестницы

0.00 (0%) 0 votes