Sum triangle from array
Given an array of integers, print a sum triangle from it such that the first level has all array elements. From then, at each level number of elements is one less than the previous level and elements at the level is be the Sum of consecutive two elements in the previous level.
Example :
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)
Approach :
- Recursion is the key. At each iteration create a new array which contains the Sum of consecutive elements in the array passes as parameter.
- Make a recursive call and pass the newly created array in the previous step.
- While back tracking print the array (for printing in reverse order).
Below is implementation of the above approach :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.
?>
Output :
[48] [20, 28] [8, 12, 16] [3, 5, 7, 9] [1, 2, 3, 4, 5]
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.