Maison > développement back-end > C++ > Vérifier si la somme maximale des faces visibles de N dés est d'au moins X

Vérifier si la somme maximale des faces visibles de N dés est d'au moins X

WBOY
Libérer: 2023-09-16 14:13:02
avant
790 Les gens l'ont consulté

Vérifier si la somme maximale des faces visibles de N dés est dau moins X

L'efficacité et la précision sont souvent cruciales lors de la résolution de problèmes complexes de programmation. Un défi particulier consiste à déterminer de manière appropriée si la somme maximale des faces visibles de N dés est égale ou supérieure à X. Dans cet article, nous évaluons diverses approches pour résoudre cette difficulté dans le codage C++, notamment des explications syntaxiques et des algorithmes étape par étape. De plus, nous fournirons deux exemples de code exécutable réels et complets basés sur l’approche proposée. À la fin, vous comprendrez clairement comment vérifier en C++ si la somme maximale des faces visibles de N dés est au moins X.

Grammaire

Avant d'aborder ces méthodes, comprenons d'abord la syntaxe des méthodes que nous utiliserons dans le code suivant -

bool checkVisibleSum(int N, int X, vector<int>& dice);
Copier après la connexion

Méthode 1

Algorithme

  • Tout d’abord, initialisez une variable visibleSum à 0. Cette variable stockera la somme des faces visibles.

  • Parcourez chaque élément du vecteur de dés.

  • Pour chaque dé, disposez les faces par ordre décroissant.

  • Ajoutez la plus grande face (le premier élément après le tri) à visibleSum.

  • Si à tout moment, visibleSum devient supérieur ou égal à X, renvoie true.

  • Si aucune somme visible supérieure ou égale à X n'est trouvée une fois l'itération terminée, renvoyez false.

Exemple

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool checkVisibleSum(int N, int X, vector<vector<int>>& dice) {
   int visibleSum = 0;

   for (int i = 0; i < dice.size(); i++) {
      sort(dice[i].rbegin(), dice[i].rend());
      visibleSum += dice[i][0];

      if (visibleSum >= X)
         return true;
   }

   return false;
}

int main() {
   int N = 2; // Number of dice

   vector<vector<int>> dice(N);
   dice[0] = {6, 5, 4}; // Faces of dice 1
   dice[1] = {3, 2, 1}; // Faces of dice 2

   int X = 15; // Minimum sum (X)

   if (checkVisibleSum(N, X, dice))
      cout << "The maximum sum of visible faces of the dice is at least " << X << ".\n";
   else
      cout << "The maximum sum of visible faces of the dice is not at least " << X << ".\n";

   return 0;
}
Copier après la connexion

Sortie

The maximum sum of visible faces of the dice is not at least 15.
Copier après la connexion
La traduction chinoise de

Explication

est :

Explication

Dans ce code, nous définissons d'abord la fonction checkVisibleSum, qui accepte trois paramètres : N (le nombre de dés), X (la somme minimale) et dice (un vecteur représentant le vecteur des faces des dés).

La fonction

checkVisibleSum implémente la méthode 1. Il initialise une variable visibleSum à 0, qui sert à stocker la somme des faces visibles. Ensuite, il parcourt chaque dé du vecteur de dés. Pour chaque dé, il trie les faces par ordre décroissant en utilisant sort(dice[i].rbegin(), dice[i].rend()). Cela garantit que la plus grande face se trouve au début du vecteur trié.

Le code ajoute ensuite le plus grand côté du dé actuel à visibleSum en utilisant visibleSum += dice[i][0]. En utilisant cette fonction, on peut mieux comprendre certains événements qui peuvent survenir dans une situation donnée.

Cela peut être vu en analysant si une somme visible donnée dépasse ou est égale à X à différents moments de son analyse. Si cette possibilité est découverte au cours de l'étude - généralement indiquée par un résultat réel - alors ils peuvent conclure avec un certain degré de certitude que le nombre maximum de caractéristiques observables est égal ou supérieur à leur intention initiale de dépasser X.

À l’inverse, s’ils ne parviennent toujours pas à trouver lesdites statistiques après quelques explorations avec des itérations et des calculs pertinents, alors il y a évidemment davantage de questions sans réponse.

Dans la fonction principale, nous invitons l'utilisateur à saisir le nombre de dés (N). Nous créons un vecteur de vecteurs appelés dés pour stocker les faces de chaque dé. Nous itérons ensuite N fois et, pour chaque dé, demandons à l'utilisateur le nombre de faces et les faces elles-mêmes. Nous stockons ces valeurs dans le vecteur de dés.

Ensuite, nous demandons à l'utilisateur de saisir la somme minimale (X). Nous passons N, X et dés à la fonction checkVisibleSum. Nous transmettrons donc un message selon lequel la somme maximale possible des faces de matrice visibles est égale ou supérieure à X. Cependant, contrairement aux perspectives positives de cette situation, nous sommes susceptibles de divulguer des connaissances après avoir appris que la fonction produit en réalité des résultats indésirables liés à X.

Méthode 2

Algorithme

  • Tout d’abord, initialisez une variable visibleSum à 0. Cette variable stockera la somme des faces visibles.

  • Parcourez chaque élément du vecteur de dés.

  • Pour chaque dé, disposez les faces par ordre décroissant.

  • Calculez la somme des N-1 premières faces (à l'exclusion de la plus grande face) et ajoutez-la à visibleSum.

  • Renvoie vrai si visibleSum devient supérieur ou égal à X.

  • Si aucune somme visible supérieure ou égale à X n'est trouvée une fois l'itération terminée, renvoyez false.

Exemple

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

using namespace std;

bool checkVisibleSum(int N, int X, vector<vector<int>>& dice) {
   int visibleSum = 0;

   for (int i = 0; i < dice.size(); i++) {
      sort(dice[i].rbegin(), dice[i].rend());
      int sum = accumulate(dice[i].begin(), dice[i].end() - 1, 0);
      visibleSum += sum;

      if (visibleSum >= X)
         return true;
   }

   return false;
}

int main() {
   int N = 2; // Number of dice

   vector<vector<int>> dice(N);
   dice[0] = {6, 5, 4}; // Faces of dice 1
   dice[1] = {3, 2, 1}; // Faces of dice 2

   int X = 15; // Minimum sum (X)

   if (checkVisibleSum(N, X, dice))
      cout << "The maximum sum of visible faces of the dice is at least " << X << ".\n";
   else
      cout << "The maximum sum of visible faces of the dice is not at least " << X << ".\n";

   return 0;
}
Copier après la connexion

Sortie

The maximum sum of visible faces of the dice is at least 15.
Copier après la connexion
La traduction chinoise de

Explication

est :

Explication

Dans ce code, nous avons la même fonction checkVisibleSum que dans la première méthode. Toutefois, la principale différence réside dans le calcul de la somme visible.

La méthode 2 additionne les N-1 premières faces de chaque dé, en excluant la plus grande face. Pour y parvenir, nous utilisons la fonction accumulate de la bibliothèque Nous passons dice[i].begin() et dice[i].begin() + N - 1 comme plage à accumuler, en additionnant efficacement les faces requises.

Le reste du code de la fonction principale est le même que l'exemple précédent.

Conclusion

À travers cet article, notre sujet s'articule autour de la résolution d'une question importante sur le codage C++. Comment savoir exactement si la somme des plus grandes faces visibles d’un jeu de dés donné (N) est au moins X ? Pour répondre au mieux à cette question, nous avons trouvé deux solutions pratiques : premièrement, s'assurer que la somme des résultats de chaque lancer de dé est égale ou supérieure à X, deuxièmement, évaluer uniquement la somme des N-1 premiers lancers de dé et déterminer s'ils correspondent ; ou dépasse X. De plus, nous fournissons la configuration du code pour chaque méthode et des conseils détaillés pour exécuter ces procédures. De plus, nous fournissons deux exemples de code réels et entièrement exécutables basés sur ces méthodes. En tirant parti des connaissances et du code fournis dans cet article, vous pouvez désormais résoudre en toute confiance le problème de déterminer si la somme des plus grandes faces visibles de N dés est au moins X en programmation C++.

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!

Étiquettes associées:
source:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal