Maison  >  Article  >  développement back-end  >  Le nombre de fois qu'un tableau peut être divisé à plusieurs reprises en sous-tableaux avec des sommes égales

Le nombre de fois qu'un tableau peut être divisé à plusieurs reprises en sous-tableaux avec des sommes égales

PHPz
PHPzavant
2023-09-06 12:21:071080parcourir

Le nombre de fois quun tableau peut être divisé à plusieurs reprises en sous-tableaux avec des sommes égales

En C++, nous avons un fichier d'en-tête vectoriel qui peut modifier la taille du tableau au moment de l'exécution. Dans cet article, nous apprendrons le concept du nombre de fois qu'un tableau peut être divisé à plusieurs reprises en sous-tableaux de sommes égales.

Prenons un exemple pour montrer une partition de tableau avec une somme égale.

Le tableau donné est {1,2,3,4,2}, nous divisons le tableau en deux parties −

{1,2,3}- La somme totale de chaque indice d'un tableau est de 6.

{4,2} - La somme de chaque indice du tableau est 6.

Ainsi, 2 fois la taille d'un tableau donné peut être divisée en sous-tableaux de sommes égales.

Algorithme

  • Nous allons démarrer le programme avec les fichiers d'en-tête « iostream » et « vector ».

  • Maintenant, nous démarrons le programme en créant une classe nommée « isPartition_arr ».

    Dans la section publique, déclarez un constructeur nommé ‘isPartition_arr’ qui accepte num comme paramètre pour résoudre la valeur de l'élément du tableau.

  • Nous définissons une fonction nommée 'cnt_Partition' de type entier pour calculer le nombre total de fois qu'un tableau peut être partitionné.

  • Nous initialisons la variable 'sum' à '0', qui sera ensuite utilisée pour additionner le tableau et stocker '0' dans la variable 'count', qui est utilisée pour garder une trace de les éléments du tableau incrémentent le nombre. Déclarez ensuite une boucle for pour parcourir chaque élément du vecteur ‘arr’.

  • Nous initialisons la variable 'current_sum' à '0' et parcourons chaque élément en utilisant la boucle for

  • .
  • Après avoir terminé la boucle for, nous commençons à utiliser une boucle while pour parcourir chaque élément.

    Si 'current_sum' est égal à 'current_sum', alors le décompte sera incrémenté de '1' et réinitialisé 'current_sum' à '0'. Ensuite, renvoyer ‘cnt’ comptera le nombre de fois où le tableau peut être divisé de manière égale.

  • Nous partons de la fonction principale et créons un vecteur ‘num’ de type entier pour stocker la valeur du tableau.

  • Ensuite, nous transmettons la valeur 'num' en créant l'objet de la classe. Ensuite, nous appelons la fonction 'cnt_partition' en prenant l'objet et en le stockant dans la variable 'c'.

  • Enfin, nous imprimons l'instruction de sortie sous la forme « Nombre de fois qu'un tableau peut être divisé en deux sous-tableaux de somme égale » à l'aide de la variable
  • 'c'

    .

    La traduction chinoise de
  • Exemple
est :

Exemple

Dans ce programme, nous trouverons le nombre de fois qu'un tableau peut être divisé à plusieurs reprises en deux sous-tableaux de telle sorte que leurs sommes soient égales.

#include <iostream>
#include <vector>
using namespace std;
class isPartition_arr {
   public:
   vector<int> arr;
   isPartition_arr(vector<int>& num) {
      arr = num;
   }
   int cnt_Partition() {
      int sum = 0, count = 0;
      for (int i = 0; i < arr.size(); i++) {
         sum += arr[i];
      }
      int current_sum = 0, j=0;
      while( j < arr.size() ) {
         current_sum += arr[j];
         if (current_sum == sum / 2) {
            current_sum = 0;
            count++;
         }
         j++;
      }
      return count;
   }
};
int main() {
   vector<int> num = {1, 2, 3, 4, 5, 5};
   isPartition_arr A(num);
   int c = A.cnt_Partition();
   cout <<"Number of times an array can be partitioned into\t"<< c <<"\t two subarrays with equal sum " << endl;
   return 0;
}

Sortie

Number of times an array can be partitioned into   2   two subarrays with equal sum 

Conclusion

Nous avons exploré le concept de division d'un tableau à somme égale et avons appris à diviser un tableau en différentes parties et à rendre la somme égale. Nous utilisons des concepts orientés objet pour résoudre ce problème car le code est plus lisible et un programme C++ peut être défini efficacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer