Triángulo de suma de array

Dada una array de enteros, imprima un triángulo de suma de modo que el primer nivel tenga todos los elementos de la array. A partir de entonces, en cada nivel el número de elementos es uno menos que en el nivel anterior y los elementos en el nivel son la suma de dos elementos consecutivos en el nivel anterior. 
Ejemplo :
 

Input : A = {1, 2, 3, 4, 5}
Output : [48]
         [20, 28] 
         [8, 12, 16] 
         [3, 5, 7, 9] 
         [1, 2, 3, 4, 5] 

Explanation :
Here,   [48]
        [20, 28] -->(20 + 28 = 48)
        [8, 12, 16] -->(8 + 12 = 20, 12 + 16 = 28)
        [3, 5, 7, 9] -->(3 + 5 = 8, 5 + 7 = 12, 7 + 9 = 16)
        [1, 2, 3, 4, 5] -->(1 + 2 = 3, 2 + 3 = 5, 3 + 4 = 7, 4 + 5 = 9)

Acercarse : 
 

  1. La recursividad es la clave. En cada iteración, cree una nueva array que contenga la Suma de elementos consecutivos en la array que pasa como parámetro.
  2. Realice una llamada recursiva y pase la array recién creada en el paso anterior.
  3. Mientras retrocede, imprima la array (para imprimir en orden inverso).

la

C++

// C++ program to create Special triangle.
#include<bits/stdc++.h>
using namespace std;
   
// Function to generate Special Triangle
void printTriangle(int A[] , int n)
    {
        // Base case
        if (n < 1)
            return;
   
        // Creating new array which contains the
        // Sum of consecutive elements in
        // the array passes as parameter.
        int temp[n - 1];
        for (int i = 0; i < n - 1; i++)
        {
            int x = A[i] + A[i + 1];
            temp[i] = x;
        }
   
        // Make a recursive call and pass
        // the newly created array
        printTriangle(temp, n - 1);
   
        // Print current array in the end so
        // that smaller arrays are printed first
        for (int i = 0; i < n ; i++)
        {
            if(i == n - 1)
                cout << A[i] << " ";
            else
            cout << A[i] << ", ";
        }
                   
        cout << endl;
    }
   
    // Driver function
    int main()
    {
        int A[] = { 1, 2, 3, 4, 5 };
        int n = sizeof(A) / sizeof(A[0]);
           
        printTriangle(A, n);
    }
       
// This code is contributed by Smitha Dinesh Semwal

Java

// Java program to create Special triangle.
import java.util.*;
import java.lang.*;
   
public class ConstructTriangle
{
    // Function to generate Special Triangle.
    public static void printTriangle(int[] A)
    {
        // Base case
        if (A.length < 1)
            return;
   
        // Creating new array which contains the
        // Sum of consecutive elements in
        // the array passes as parameter.
        int[] temp = new int[A.length - 1];
        for (int i = 0; i < A.length - 1; i++)
        {
            int x = A[i] + A[i + 1];
            temp[i] = x;
        }
   
        // Make a recursive call and pass
        // the newly created array
        printTriangle(temp);
   
        // Print current array in the end so
        // that smaller arrays are printed first
        System.out.println(Arrays.toString(A));
    }
   
    // Driver function
    public static void main(String[] args)
    {
        int[] A = { 1, 2, 3, 4, 5 };
        printTriangle(A);
    }
}

Python3

# Python3 program to create Special triangle.
# Function to generate Special Triangle.
def printTriangle(A):
           
        # Base case
        if (len(A) < 1):
            return
   
        # Creating new array which contains the
        # Sum of consecutive elements in
        # the array passes as parameter.
        temp = [0] * (len(A) - 1)
        for i in range( 0, len(A) - 1):
           
            x = A[i] + A[i + 1]
            temp[i] = x
           
   
        # Make a recursive call and pass
        # the newly created array
        printTriangle(temp)
           
        # Print current array in the end so
        # that smaller arrays are printed first
        print(A)
       
   
# Driver function
A = [ 1, 2, 3, 4, 5 ]
printTriangle(A)
   
# This code is contributed by Smitha Dinesh Semwal

C#

// C# program to create Special triangle.
    
using System;
                       
public class ConstructTriangle
{
// Function to generate Special Triangle
static void printTriangle(int []A, int n)
    {
        // Base case
        if (n < 1)
            return;
    
        // Creating new array which contains the
        // Sum of consecutive elements in
        // the array passes as parameter.
        int []temp = new int[n - 1];
        for (int i = 0; i < n - 1; i++)
        {
            int x = A[i] + A[i + 1];
            temp[i] = x;
        }
    
        // Make a recursive call and pass
        // the newly created array
        printTriangle(temp, n - 1);
    
        // Print current array in the end so
        // that smaller arrays are printed first
        for (int i = 0; i < n ; i++)
        {
            if(i == n - 1)
                Console.Write(A[i] + " ");
            else
            Console.Write(A[i] + ", ");
        }
                    
        Console.WriteLine();
    }
    
    // Driver function
    public static void Main()
    {
        int[] A = { 1, 2, 3, 4, 5 };
        int n = A.Length;
        printTriangle(A,n);
    }
}
   
//This code contributed by 29AjayKumar

PHP

<?php
// PHP program to create
// Special triangle.
   
// Function to generate
// Special Triangle
function printTriangle($A , $n)
    {
       
        // Base case
        if ($n < 1)
            return;
   
        // Creating new array which
        // contains the Sum of
        // consecutive elements in
        // the array passes as parameter.
        $temp[$n - 1] = 0;
        for ($i = 0; $i < $n - 1; $i++)
        {
            $x = $A[$i] + $A[$i + 1];
            $temp[$i] = $x;
        }
   
        // Make a recursive call and
        // pass the newly created array
        printTriangle($temp, $n - 1);
   
        // Print current array in the
        // end so that smaller arrays
        // are printed first
        for ($i = 0; $i < $n ; $i++)
        {
            if($i == $n - 1)
                echo $A[$i] , " ";
            else
            echo $A[$i] , ", ";
        }
                   
        echo "\n";
    }
   
// Driver Code
$A = array( 1, 2, 3, 4, 5 );
$n = sizeof($A);
   
printTriangle($A, $n);
   
// This code is contributed
// by nitin mittal.
?>

Javascript

<script>
 
// JavaScript program to create Special triangle.
 
// Function to generate Special Triangle
 function printTriangle(A,  n)
    {
        // Base case
        if (n < 1)
            return;
    
        // Creating new array which contains the
        // Sum of consecutive elements in
        // the array passes as parameter.
        var temp = new Array(n - 1);
        for (var i = 0; i < n - 1; i++)
        {
            var x = A[i] + A[i + 1];
            temp[i] = x;
        }
    
        // Make a recursive call and pass
        // the newly created array
        printTriangle(temp, n - 1);
    
        // Print current array in the end so
        // that smaller arrays are printed first
        for (var i = 0; i < n ; i++)
        {
            if(i == n - 1)
                document.write( A[i]  + " ");
            else
            document.write( A[i]  + ", ");
        }
                    
        document.write("<br>");
    }
    
    // Driver function
 
         var A = [ 1, 2, 3, 4, 5 ];
        var n = A.length;
        printTriangle(A,n);
 
</script>
Producción

48 
20, 28 
8, 12, 16 
3, 5, 7, 9 
1, 2, 3, 4, 5 

Enfoque recursivo (sin usar el bucle For dentro de la función printTriangle()):

Acercarse : 

  1. En cada iteración, creamos una nueva array (temp []) en la función printTriangle(), que contiene la suma de los elementos consecutivos de la array de entrada.
  2. Ahora pasó la array recién creada (temp []) en la llamada recursiva de la función printTriangle().
  3. Repita los pasos 1 y 2 hasta que el tamaño de la array temp[] no sea igual a 1.

Java

/*package whatever //do not write package name here */
 
import java.io.*;
import java.util.*;
class GFG {
  public static void main(String[] args)
  {
    //input Array
    int[] x = { 1, 2, 3, 4, 5 };
    //Recursive function that will print answer
    printTriangle(x);
    System.out.println(Arrays.toString(x));
  }
static void printTriangle(int[] x)
{
    //base condition
    if (x.length == 1) {
        return;
    }
    /*temprory Array of input array in print(int[] arr) function
    for example arr = {1,2,3,4,5}
    then temp[] = {3,5,7,9} of size(arr.length-1)=4*/
    int[] temp = new int[x.length - 1];
    //Recursive function to fill elements in temp Array according to Que. 
    helper(temp, x, 0);
    //Recursive call for print(int[] arr) function
    printTriangle(temp);
    //prints String format of temp Array//
    System.out.println(Arrays.toString(temp));
}
  //Recursive function to fill elements in temp Array//
static int[] helper(int[] temp, int[] x, int index)
{
    //base condition//
    if (index == x.length - 1) {
        return temp;
    }
    temp[index] = x[index] + x[index + 1];
    //Recursive Call for helper() function//
    return helper(temp, x, index + 1);
}
}
//This Code is Contributed by Pradeep_6036 from YMCA//
Producción

[48]
[20, 28]
[8, 12, 16]
[3, 5, 7, 9]
[1, 2, 3, 4, 5]

Publicación traducida automáticamente

Artículo escrito por Sagar Shukla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *