Dados tres números enteros N, K y S , la tarea es elegir una array de tamaño N tal que existan exactamente K sub-arrays con suma S.
Nota: Puede haber muchas arrays de soluciones para este problema.
Ejemplos:
Entrada: N = 4, K = 2, S = 3
Salida: 1 2 3 4
Explicación:
Uno de los posibles arreglos es [ 1, 2, 3, 4 ]
Existen exactamente dos subarreglos con suma 3
Subarreglos con suma(3) = [ [ 1, 2 ], [ 3 ] ]
Entrada: N = 5, K = 3, S = 50
Salida: 25 25 25 10 40
Explicación:
Una de las arrays posibles es [ 25, 25, 25, 10, 40 ]
Existen exactamente tres subarreglos con suma 50
Subarreglos con Sum(50) = [ [ 25, 25 ], [ 25, 25 ], [ 10, 40 ] ]
Enfoque:
uno de los arreglos de soluciones para este problema contiene S elemento K veces y S+1 elemento (NK) veces, para formar K Sub-arreglos de exactamente un elemento con S como suma. Si combinamos dos o más elementos de la array, dará una suma mayor que S.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to find array // with K subarrays with sum S #include<bits/stdc++.h> using namespace std; // Function to find array // with K subarrays with sum S void SubarraysWithSumS(int n, int k, int s) { for(int i=0;i<k;i++) cout << s << " "; for(int i=k;i<n;i++) cout << s+1 << " "; } // Driver Code int main() { int n = 4, k = 2, s = 3; // Function call SubarraysWithSumS(n, k, s); return 0; }
Java
// Java program to find array // with K subarrays with sum S class GFG { // Function to find array // with K subarrays with sum S static void SubarraysWithSumS(int n, int k, int s) { for(int i = 0; i < k; i++) System.out.print(s + " "); for(int i = k; i < n; i++) System.out.print(s + 1 + " "); } // Driver Code public static void main(String[] args) { int n = 4, k = 2, s = 3; // Function call SubarraysWithSumS(n, k, s); } } // This code is contributed by 29AjayKumar
Python3
# Python3 program to find array # with K subarrays with sum S # Function to find array # with K subarrays with sum S def SubarraysWithSumS(n, k, s): for i in range(k): print(s, end=" ") for i in range(k, n): print(s + 1, end = " ") # Driver Code n = 4 k = 2 s = 3 # Function call SubarraysWithSumS(n, k, s) # This code is contributed by mohit kumar 29
C#
// C# program to find array // with K subarrays with sum S using System; class GFG { // Function to find array // with K subarrays with sum S static void SubarraysWithSumS(int n, int k, int s) { for(int i = 0; i < k; i++) Console.Write(s + " "); for(int i = k; i < n; i++) Console.Write(s + 1 + " "); } // Driver Code public static void Main(String[] args) { int n = 4, k = 2, s = 3; // Function call SubarraysWithSumS(n, k, s); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // Javascript program to find array // with K subarrays with sum S // Function to find array // with K subarrays with sum S function SubarraysWithSumS(n,k,s) { for(let i = 0; i < k; i++) document.write(s + " "); for(let i = k; i < n; i++) document.write(s + 1 + " "); } // Driver Code let n = 4, k = 2, s = 3; // Function call SubarraysWithSumS(n, k, s); // This code is contributed by unknown2108 </script>
3 3 4 4
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(1)
Tema relacionado: Subarrays, subsecuencias y subconjuntos en array
Publicación traducida automáticamente
Artículo escrito por pawan_asipu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA