Table des matières
Première approche
Exemple
Sortie
Description du code ci-dessus
Deuxième méthode
Explication du code ci-dessus
Comprendre les boucles
Conclusion
Maison développement back-end C++ Programmation en C++, trouver le nombre de sous-tableaux avec m nombres impairs

Programmation en C++, trouver le nombre de sous-tableaux avec m nombres impairs

Sep 11, 2023 am 08:09 AM
programmation c nombre impair de sous-tableaux

Programmation en C++, trouver le nombre de sous-tableaux avec m nombres impairs

Si vous avez déjà utilisé le C++, vous devez savoir ce que sont les sous-tableaux et à quel point ils sont utiles. Comme nous le savons tous, en C++, nous pouvons résoudre facilement plusieurs problèmes mathématiques. Ainsi, dans cet article, nous expliquerons comment trouver les informations complètes sur M nombres impairs à l'aide de ces sous-tableaux en C++.

Dans ce problème, nous devons trouver un nombre de sous-tableaux et d'entiers m constitués du tableau donné, où chaque sous-tableau contient exactement m nombres impairs. Voici un exemple simple de cette approche -

Input : array = { 6,3,5,8,9 }, m = 2
Output : 5
Explanation : Subarrays with exactly 2 odd numbers are
{ 3,5 }, { 6,3,5 }, { 3,5,8 }, { 5,8,9 }, { 6,3,5,8 }, { 3,5,8,9 }

Input : array = { 1,6,3,2,5,4 }, m = 2
Output : 6
Explanation : Subarrays with exactly 2 odd numbers are
{ 1,6,3 }, { 3,2,5 }, { 1,6,3,2 }, { 6,3,2,5 }, { 3,2,5,4 }, { 6,3,2,5,4 }
Copier après la connexion

Première approche

Dans cette approche, tous les sous-tableaux possibles sont générés à partir du tableau donné et chaque sous-tableau est vérifié s'il contient exactement m nombres impairs. Il s'agit d'une méthode simple de génération et de recherche avec une complexité temporelle de O(n2).

Exemple

#include <bits/stdc++.h>
using namespace std;
int main (){
    int a[] = { 1, 6, 3, 2, 5, 4 };
    int n = 6, m = 2, count = 0; // n is size of array, m numbers to be find in subarrays,
                              // count is number of subarray with m odd numbers
    for (int i = 0; i < n; i++){ // outer loop to process each element.
        int odd = 0;
        for (int j = i; j < n; j++) {// inner loop to find subarray with m number
            if (a[j] % 2)
                odd++;
            if (odd == m) // if odd numbers become equals to m.
                count++;
        }
    }
    cout << "Number of subarrays with n numbers are: " << count;
    return 0;
}
Copier après la connexion

Sortie

Number of subarrays with n numbers are: 6
Copier après la connexion
Copier après la connexion

Description du code ci-dessus

Dans ce code, nous utilisons des boucles imbriquées pour trouver m sous-tableaux impairs, la boucle externe est utilisée pour incrémenter "i", qui sera utilisé pour traiter chacun élément dans le tableau.

La boucle interne est utilisée pour trouver le sous-tableau et traiter les éléments jusqu'à ce que le compteur impair atteigne m, incrémenter le compteur de résultats pour chaque sous-tableau trouvé et enfin imprimer le résultat stocké dans le compte

Deuxième méthode

Une autre méthode consiste à créez un tableau pour stocker le nombre "i" de préfixes impairs, traitez chaque élément et incrémentez le nombre de nombres impairs chaque fois qu'un nombre impair est trouvé.

Lorsque le nombre de nombres impairs est supérieur ou égal à m, ajoutez-y le nombre à la position (impair - m) dans le tableau de préfixes.

Lorsque le nombre impair devient supérieur ou égal à m, nous comptons le nombre de sous-tableaux formés jusqu'à ce que l'index et le nombre "impair - m" soient ajoutés à la variable de comptage. Une fois chaque élément traité, le résultat est stocké dans la variable count.

Exemple

#include <bits/stdc++.h>
using namespace std;
int main (){
    int array[ ] = { 1, 6, 3, 2, 5, 4 };
    int n = 6, m = 2, count = 0, odd = 0, i;
    int prefix_array[n + 1] = { 0 };
    // outer loop to process every element of array
    for (i = 0; i < n; i++){
        prefix_array[odd] = prefix_array[odd] + 1;    // implementing value at odd index in prefix_array[ ]
        // if array element is odd then increment odd variable
        if (array[i] % 2 == 0)
            odd++;
        // if Number of odd element becomes equal or greater than m
        //  then find the number of possible subarrays that can be formed till the index.
        if (odd >= m)
            count += prefix_array[odd - m];
    }
    cout << "Number of subarrays with n numbers are: " << count;
    return 0;
}
Copier après la connexion

Sortie

Number of subarrays with n numbers are: 6
Copier après la connexion
Copier après la connexion

Explication du code ci-dessus

Initialisation des tableaux et des variables à l'aide des valeurs de départ -

int array[ 6 ] = { 1, 6, 3, 2, 5, 4 };
int n = 6, m = 2, count = 0, odd = 0, i;
int prefix_array[n + 1] = { 0 };
Copier après la connexion

Ici, nous initialisons la variable n avec la taille du tableau et la variable m avec le nombre de nombres impairs nous recherchons, initialisons count avec 0 pour garder le nombre de sous-tableaux possibles, initialisons les nombres impairs avec 0, initialisons la variable n avec prefix_array de taille n + 1 0.

Comprendre les boucles

for (i = 0; i < n; i++){
   prefix_array[odd] = prefix_array[odd] + 1;
   if (array[i] % 2 == 0)
      odd++;
      if (odd >= m)
         count += prefix_array[odd - m];
}
Copier après la connexion

Dans cette boucle, nous sommes dans prefix_array [ ] implémente la valeur à un index impair, puis incrémente la variable impaire si un nombre impair est trouvé. Nous constatons que lorsque les variables impaires sont égales ou supérieures à m, le nombre de sous-tableaux peut être formé, jusqu'à l'index.

Enfin, nous imprimons les m nombres de sous-tableaux impairs stockés dans la variable count et obtenons le résultat.

Conclusion

Dans cet article, nous avons vu comment trouver le nombre de m sous-tableaux impairs de deux manières -

  • Générez chaque sous-tableau et vérifiez s'il contient m nombres impairs et incrémentez chaque sous-tableau. tableau trouvé Le nombre du tableau. La complexité temporelle de ce code est O(n2).

  • De manière efficace, parcourez chaque élément du tableau et créez un tableau de préfixes, puis utilisez l'aide du tableau de préfixes. La complexité temporelle de ce code est O(n).

J'espère que cet article vous aidera à comprendre le problème et la solution.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisez C++ pour écrire du code afin de trouver le Nième nombre non carré Utilisez C++ pour écrire du code afin de trouver le Nième nombre non carré Aug 30, 2023 pm 10:41 PM

Nous connaissons tous des nombres qui ne sont le carré d’aucun nombre, comme 2, 3, 5, 7, 8, etc. Il existe N nombres non carrés et il est impossible de connaître tous les nombres. Ainsi, dans cet article, nous expliquerons tout sur les nombres sans carrés ou non carrés et les moyens de trouver le Nième nombre non carré en C++. Nième nombre non carré Si un nombre est le carré d'un entier, alors ce nombre est appelé un carré parfait. Quelques exemples de nombres carrés parfaits sont -1iscarréde14iscarréde29iscarréde316iscarréde425iscarréde5 Si un nombre n'est le carré d'aucun entier, alors le nombre est appelé non carré. Par exemple, les 15 premiers nombres non carrés sont -2,3,5,6,

Trouver le nombre de paires uniques dans un tableau en utilisant C++ Trouver le nombre de paires uniques dans un tableau en utilisant C++ Sep 07, 2023 am 11:53 AM

Nous avons besoin de connaissances appropriées pour créer plusieurs paires uniques dans la syntaxe des tableaux de C++. Tout en trouvant le nombre de paires uniques, nous comptons toutes les paires uniques dans le tableau donné, c'est-à-dire que toutes les paires possibles peuvent être formées où chaque paire doit être unique. Par exemple -Input:array[]={5,5,9}Output:4Explication:Thenumberoffalluniquepairsare(5,5),(5,9),(9,5)and(9,9).Input:array[] = {5,4,3,2,2}Sortie : 16 façons de trouver une solution Il existe deux façons de résoudre ce problème, ce sont -

En programmation C, trouver l'aire d'un cercle En programmation C, trouver l'aire d'un cercle Aug 25, 2023 pm 10:57 PM

Un cercle est une figure fermée. Tous les points d'un cercle sont équidistants d'un point à l'intérieur du cercle. Le point central est appelé le centre du cercle. La distance d’un point au centre d’un cercle s’appelle le rayon. L'aire est une représentation quantitative de l'étendue des dimensions d'une figure fermée. L'aire d'un cercle est l'aire délimitée par les dimensions du cercle. La formule pour calculer l'aire d'un cercle, Aire=π*r*r Pour calculer l'aire, nous donnons le rayon du cercle en entrée, nous utiliserons la formule pour calculer l'aire, algorithme ÉTAPE 1 : Prendre le rayon comme entrée de l'utilisateur utilisant st dinput.ÉTAPE 2 : Calculez l'aire du cercle en utilisant, aire = (

Algorithme d'inversion pour la rotation à droite du tableau écrit en C++ Algorithme d'inversion pour la rotation à droite du tableau écrit en C++ Sep 08, 2023 pm 08:17 PM

Dans cet article, nous découvrirons l'algorithme d'inversion pour faire pivoter le tableau donné vers la droite de k éléments, par exemple −Input:arr[]={4,6,2,6,43,7,3,7}, k= 4Sortie :{43,7,3,7,4,6,2,6}Explication : La rotation de chaque élément du tableau par 4 éléments vers la droite donne{43,7,3,7,4,6,2,6}.Entrée :arr[]= {8 ,5,8,2,1,4,9,3},k=3Sortie :{4,9,3,8,5,8,2,1} Trouver la solution

Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec les mêmes valeurs minimales et maximales Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec les mêmes valeurs minimales et maximales Aug 25, 2023 pm 11:33 PM

Dans cet article, nous utiliserons C++ pour résoudre le problème de trouver le nombre de sous-tableaux dont les valeurs maximales et minimales sont les mêmes. Voici un exemple du problème −Input:array={2,3,6,6,2,4,4,4}Output:12Explication :{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}et{4,4,4}sont les sous-tableaux qui peuvent être formés avec les mêmes éléments maximum et minimum. Entrée : tableau = {3, 3, 1,5,

Inverser le regroupement de listes doublement chaînées par taille donnée en utilisant C++ Inverser le regroupement de listes doublement chaînées par taille donnée en utilisant C++ Sep 04, 2023 am 09:49 AM

Dans ce problème, on nous donne un pointeur vers la tête de la liste chaînée et un entier k. Dans un groupe de taille k, nous devons inverser la liste chaînée. Par exemple -Input:1<->2<->3<->4<->5(doublelylinkedlist),k=3Output:3<->2<->1<->5<->4 à la recherche de solutions Méthode Dans ce problème, nous formulerons un algorithme récursif pour résoudre ce problème. Dans cette méthode, nous utiliserons la récursivité et résoudrons le problème en utilisant la récursivité. Exemple#include<iostream&

Algorithme d'inversion pour la rotation des tableaux écrit en C++ Algorithme d'inversion pour la rotation des tableaux écrit en C++ Aug 28, 2023 pm 11:13 PM

Dans le problème donné, nous avons un tableau et nous devons faire pivoter le tableau de d éléments en utilisant un algorithme d'inversion comme −Input:arr[]=[1,2,3,4,5,6,7], d=2Output : arr[]=[3,4,5,6,7,1,2]Explication : Comme vous pouvez le voir, nous devons faire pivoter ce tableau de d=2 mais notre tâche principale consiste à y parvenir en utilisant une technique d'inversion. Nous avons effectué quelques calculs sur la rotation du tableau en utilisant des techniques d'inversion et avons conclu : Tout d'abord, nous inversons.

Écrit en C++, trouver le nombre de relations réflexives sur un ensemble Écrit en C++, trouver le nombre de relations réflexives sur un ensemble Aug 26, 2023 pm 08:17 PM

Dans cet article, nous expliquerons comment trouver des relations réflexives sur un ensemble. Dans ce problème, on nous donne un nombre n et un ensemble de n nombres naturels, et nous devons déterminer le nombre de relations réflexives. Relation réflexive - Une relation R est dite être une relation réflexive sur l'ensemble A si pour chaque 'a' dans l'ensemble A, (a, a) appartient à la relation R. Par exemple -Input:x=1Output:1Explanation:set={1},reflexiverelationsonA*A:{{1}}Input:x=2Output:4Explanation:set={1,2},reflexiverelationsonA*

See all articles