Dada una array de n enteros. La tarea es encontrar la suma de cada subsecuencia de la array.
Ejemplos:
Input : arr[] = { 6, 8, 5 } Output : 76 All subsequence sum are: { 6 }, sum = 6 { 8 }, sum = 8 { 5 }, sum = 5 { 6, 8 }, sum = 14 { 6, 5 }, sum = 11 { 8, 5 }, sum = 13 { 6, 8, 5 }, sum = 19 Total sum = 76. Input : arr[] = {1, 2} Output : 6
Método 1 (fuerza bruta):
Genere toda la subsecuencia y encuentre la suma de cada subsecuencia.
Método 2 (enfoque eficiente):
para una array de tamaño n, tenemos 2^n subsecuencias (incluidas las vacías) en total. Observe, en total 2 n subsecuencias, cada elemento ocurre 2 n-1 veces.
Por ejemplo, arr[] = { 5, 6, 7 }
Entonces, la suma de todas las subsecuencias será (suma de todos los elementos) * 2 n-1 .
A continuación se muestra la implementación de este enfoque:
C++
// C++ program to find sum of all sub-sequences // of an array. #include<bits/stdc++.h> using namespace std; // Return sum of sum of all sub-sequence. int sum(int arr[], int n) { int ans = 0; // Finding sum of the array. for (int i = 0; i < n; i++) ans += arr[i]; return ans * pow(2, n - 1); } // Driver Code int main() { int arr[] = { 6, 7, 8 }; int n = sizeof(arr)/sizeof(arr[0]); cout << sum(arr, n) << endl; return 0; }
Java
// Java program to find sum of // all sub-sequences of an array. import java.io.*; import java.math.*; class GFG { // Return sum of sum of all sub-sequence. static int sum(int arr[], int n) { int ans = 0; // Finding sum of the array. for (int i = 0; i < n; i++) ans += arr[i]; return ans * (int)(Math.pow(2, n - 1)); } // Driver Code public static void main(String args[]) { int arr[]= { 6, 7, 8 }; int n = arr.length; System.out.println(sum(arr, n)); } } // This code is contributed by Nikita Tiwari.
Python3
# Python 3 program to find sum of # all sub-sequences of an array. # Return sum of sum of all sub-sequence. def sm(arr , n) : ans = 0 # Finding sum of the array. for i in range(0, n) : ans = ans + arr[i] return ans * pow(2, n - 1) # Driver Code arr = [ 6, 7, 8 ] n=len(arr) print(sm(arr, n)) # This code is contributed by Nikita Tiwari.
C#
// C# program to find sum of // all sub-sequences of an array. using System; class GFG { // Return sum of sum of all sub-sequence. static int sum(int []arr, int n) { int ans = 0; // Finding sum of the array. for (int i = 0; i < n; i++) ans += arr[i]; return ans * (int)(Math.Pow(2, n - 1)); } // Driver Code public static void Main() { int []arr= { 6, 7, 8 }; int n = arr.Length; Console.Write(sum(arr, n)); } } // This code is contributed by nitin mittal
PHP
<?php // PHP program to find sum of // all sub-sequences of an array. // Return sum of sum of // all sub-sequence. function sum($arr, $n) { $ans = 0; // Finding sum of the array. for ($i = 0; $i < $n; $i++) $ans += $arr[$i]; return $ans * pow(2, $n - 1); } // Driver Code $arr = array(6, 7, 8); $n = sizeof($arr); echo sum($arr, $n) ; // This code is contributed by nitin mittal. ?>
Javascript
<script> // JavaScript program to find sum of all sub-sequences // of an array. // Return sum of sum of all sub-sequence. function sum(arr, n) { var ans = 0; // Finding sum of the array. for (var i = 0; i < n; i++) ans += arr[i]; return ans * Math.pow(2, n - 1); } // Driver Code var arr = [6, 7, 8]; var n = arr.length; document.write( sum(arr, n)); </script>
84
Complejidad temporal: O(n)
Espacio auxiliar: O(1)
Este artículo es una contribución de Anuj Chauhan . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA