Aquí veremos cómo imprimir el triángulo de Pascal usando un programa C. El Triángulo de Pascal es una array triangular de coeficientes binomiales en la que la n -ésima fila contiene coeficientes binomiales n C 0 , n C 1 , n C 2 , ……. n C n . Hay 2 métodos para imprimir el triángulo de pascal usando el programa C:
- Uso de arrays 2D.
- Usando combinación.
Vamos a discutir estos métodos en detalle.
1. Uso de arrays 2D
Se puede observar que cada entrada es la suma de los dos valores por encima de ella. Entonces podemos crear una array 2D que almacene valores generados previamente. Para generar un valor en una línea, podemos usar los valores almacenados previamente de la array.
C
// C program to print Pascal’s // Triangle using 2D Arrays in // O(n^2) time and O(n^2) extra space // method. #include<stdio.h> void printPascal(int n) { // An auxiliary array to store // generated pascal triangle values int arr[n][n]; // Iterate through every line and // print integer(s) in it for (int line = 0; line < n; line++) { // Every line has number of integers // equal to line number for (int i = 0; i <= line; i++) { // First and last values in // every row are 1 if (line == i || i == 0) arr[line][i] = 1; // Other values are sum of values // just above and left of above else arr[line][i] = (arr[line - 1][i - 1] + arr[line - 1][i]); printf("%d ", arr[line][i]); } printf("\n"); } } // Driver code int main() { int n = 5; printPascal(n); return 0; }
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
Complejidad del tiempo:O(n 2 )
Espacio Auxiliar: O(n 2 )
2. Usando combinación
n C r se puede representar como C(n,r) y esto representa el elemento r de la n – ésima fila en la pirámide de pascal. La idea es calcular C(n, r) usando C(n, r-1). Se puede calcular en tiempo O(1) usando lo siguiente.
C(n, r) = C(n, r-1) * (n – r + 1) / r
A continuación se muestra el programa C para imprimir el triángulo de pascal usando combinaciones:
C
// C program to print Pascal’s Triangle // using combinations in O(n^2) time // and O(1) extra space function #include <stdio.h> void printPascal(int n) { for (int line = 1; line <= n; line++) { // used to represent C(line, i) int C = 1; for (int i = 1; i <= line; i++) { // The first value in a line // is always 1 printf("%d ", C); C = C * (line - i) / i; } printf("\n"); } } // Driver code int main() { int n = 5; printPascal(n); return 0; }
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
Complejidad temporal: O(n 2 )
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por ishankhandelwals y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA