Dada la cuadrícula NxN de caminos horizontales y verticales. La tarea es averiguar el número de formas en que la persona puede ir del punto A al punto B utilizando el camino más corto posible.
Nota: Los puntos A y B están fijos, es decir, A está en la esquina superior izquierda y B en la esquina inferior derecha, como se muestra en la imagen de abajo.
En la imagen de arriba, el camino que se muestra en color rojo y verde claro son los dos caminos posibles para llegar del punto A al punto B.
Ejemplos:
Input: N = 3 Output: Ways = 20 Input: N = 4 Output: Ways = 70
Fórmula:
Deje que la cuadrícula sea N x N, el número de formas se puede escribir como.
¿Cómo funciona la fórmula anterior?
Consideremos el ejemplo de la cuadrícula de 5×5 como se muestra arriba. Para ir del punto A al punto B en la cuadrícula de 5×5, tenemos que dar 5 pasos horizontales y 5 pasos verticales. Cada camino será un arreglo de 10 pasos de los cuales 5 pasos son idénticos de un tipo y otros 5 pasos son idénticos de un segundo tipo. Por lo tanto
, número de caminos = 10! / (5! * 5!) es decir, 252 vías.
C++
// C++ implementation of above approach #include <bits/stdc++.h> using namespace std; // function that will // calculate the factorial long factorial(int N) { int result = 1; while (N > 0) { result = result * N; N--; } return result; } long countWays(int N) { long total = factorial(N + N); long total1 = factorial(N); return (total / total1) / total1; } // Driver code int main() { int N = 5; cout << "Ways = " << countWays(N); return 0; }
Java
// Java implementation of above approach class GfG { // function that will // calculate the factorial static long factorial(int N) { int result = 1; while (N > 0) { result = result * N; N--; } return result; } static long countWays(int N) { long total = factorial(N + N); long total1 = factorial(N); return (total / total1) / total1; } // Driver code public static void main(String[] args) { int N = 5; System.out.println("Ways = " + countWays(N)); } }
Python3
# Python3 implementation of above approach # function that will calculate the factorial def factorial(N) : result = 1; while (N > 0) : result = result * N; N -= 1; return result; def countWays(N) : total = factorial(N + N); total1 = factorial(N); return (total // total1) // total1; # Driver code if __name__ == "__main__" : N = 5; print("Ways =", countWays(N)); # This code is contributed by Ryuga
C#
// C# implementation of above approach using System; class GfG { // function that will // calculate the factorial static long factorial(int N) { int result = 1; while (N > 0) { result = result * N; N--; } return result; } static long countWays(int N) { long total = factorial(N + N); long total1 = factorial(N); return (total / total1) / total1; } // Driver code public static void Main(String []args) { int N = 5; Console.WriteLine("Ways = " + countWays(N)); } } // This code is contributed by Arnab Kundu
PHP
<?php // PHP implementation of above approach // function that will // calculate the factorial function factorial($N) { $result = 1; while ($N > 0) { $result = $result * $N; $N--; } return $result; } function countWays($N) { $total = factorial($N + $N); $total1 = factorial($N); return ($total / $total1) / $total1; } // Driver code $N = 5; echo "Ways = ", countWays($N); // This code is contributed by ajit ?>
Javascript
<script> // Javascript implementation of above approach // function that will // calculate the factorial function factorial(N) { var result = 1; while (N > 0) { result = result * N; N--; } return result; } function countWays(N) { var total = factorial(N + N); var total1 = factorial(N); return (total / total1) / total1; } // Driver code var N = 5; document.write( "Ways = " + countWays(N)); // This code is contributed by rutvik_56. </script>
Ways = 252
Publicación traducida automáticamente
Artículo escrito por Naman_Garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA