English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Come trovare un array di sottoarray consecutivo con somma uguale a un numero dato in Java?

Trova l'array di sottoinsieme contiguo la cui somma è uguale a un numero dato-

  • Esamina l'array.

  • Per ogni elemento, aggiungi elementi uno dopo l'altro n volte, quando la somma è uguale al valore richiesto, stampa l'array di sottoinsieme.

Esempio

import java.util.Arrays;
import java.util.Scanner;
public class sub_arrays {
   public static void main(String args[]){
      //Leggi l'array dall'utente
      Scanner sc = new Scanner(System.in);
      System.out.println("Inserisci la dimensione dell'array da creare: ");
      int size = sc.nextInt();
      int[] myArray = new int[size];
      System.out.println("Inserisci gli elementi dell'array:");
      for(int i=0; i<size; i++){
         myArray[i] = sc.nextInt();
      }
      //Lettura del numero
      System.out.println("Inserisci la somma richiesta:");
      int reqSum = sc.nextInt();
      System.out.println("L'array creato è: " + Arrays.toString(myArray));
      System.out.println("sottovettori il cui somma è: " + reqSum);
      for(int i=0; i<myArray.length; i++){
         int sum = 0;
         for(int j=i; j<myArray.length; j++){
            sum = sum + myArray[j];
            if(sum == reqSum){
               System.out.println(Arrays.toString(Arrays.copyOfRange(myArray, i, j+1)));
            }
         }
      }
   }
}

Risultato di output

Inserisci la dimensione dell'array da creare:
10
Inserisci gli elementi dell'array:
5
4
1
2
3
4
1
4
5
5
Inserisci la somma richiesta:
10
L'array creato è: [5, 4, 1, 2, 3, 4, 1, 4, 5, 5]
sottovettori il cui somma è: 10
[5, 4, 1]
[4, 1, 2, 3]
[1, 2, 3, 4]
[2, 3, 4, 1]
[1, 4, 5]
[5, 5]