Encuentre una array de tamaño N que tenga exactamente K subarreglos con suma S

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>
Producción: 

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

Deja una respuesta

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