Heim  >  Artikel  >  Backend-Entwicklung  >  Prüfen Sie, ob die maximale Summe der sichtbaren Flächen von N Würfeln mindestens X beträgt

Prüfen Sie, ob die maximale Summe der sichtbaren Flächen von N Würfeln mindestens X beträgt

WBOY
WBOYnach vorne
2023-09-16 14:13:02753Durchsuche

Prüfen Sie, ob die maximale Summe der sichtbaren Flächen von N Würfeln mindestens X beträgt

Effizienz und Genauigkeit sind oft entscheidend bei der Lösung komplexer Probleme in der Programmierung. Eine besondere Herausforderung besteht darin, angemessen zu bestimmen, ob die maximale Summe der sichtbaren Flächen von N Würfeln gleich oder größer als X ist. In diesem Artikel bewerten wir verschiedene Ansätze zur Lösung dieser Schwierigkeit bei der C++-Codierung, einschließlich Syntaxerklärungen und Schritt-für-Schritt-Algorithmen. Darüber hinaus werden wir zwei echte, vollständig ausführbare Codebeispiele bereitstellen, die auf dem vorgeschlagenen Ansatz basieren. Am Ende werden Sie ein klares Verständnis dafür haben, wie Sie in C++ prüfen, ob die maximale Summe der sichtbaren Flächen von N Würfeln mindestens X beträgt.

Grammatik

Bevor wir uns mit diesen Methoden befassen, wollen wir zunächst die Syntax der Methoden verstehen, die wir im folgenden Code verwenden werden -

bool checkVisibleSum(int N, int X, vector<int>& dice);

Methode 1

Algorithmus

  • Zuerst initialisieren Sie eine Variable „visibleSum“ auf 0. Diese Variable speichert die Summe der sichtbaren Gesichter.

  • Durchlaufen Sie jedes Element im Würfelvektor.

  • Ordnen Sie für jeden Würfel die Gesichter in absteigender Reihenfolge an.

  • Fügen Sie die größte Fläche (das erste Element nach der Sortierung) zur sichtbaren Summe hinzu.

  • Wenn die sichtbare Summe zu irgendeinem Zeitpunkt größer oder gleich X wird, wird „true“ zurückgegeben.

  • Wenn nach Abschluss der Iteration keine sichtbare Summe größer oder gleich X gefunden wird, wird „false“ zurückgegeben.

Beispiel

#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;
}

Ausgabe

The maximum sum of visible faces of the dice is not at least 15.
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

In diesem Code definieren wir zunächst die Funktion checkVisibleSum, die drei Parameter akzeptiert: N (die Anzahl der Würfel), X (die Mindestsumme) und dice (ein Vektor, der den Vektor der Würfelflächen darstellt).

checkVisibleSum-Funktion implementiert Methode 1. Es initialisiert eine Variable „visibleSum“ auf 0, die zum Speichern der Summe der sichtbaren Flächen verwendet wird. Anschließend wird über jeden Würfel im Würfelvektor iteriert. Für jeden Würfel werden die Gesichter mithilfe von sort(dice[i].rbegin(), dice[i].rend()) in absteigender Reihenfolge sortiert. Dadurch wird sichergestellt, dass sich die größte Fläche am Anfang des sortierten Vektors befindet.

Dann fügt der Code die größte Seite des aktuellen Würfels zu VisibleSum hinzu, indem er VisibleSum += Dice[i][0] verwendet. Mithilfe dieser Funktion können bestimmte Ereignisse, die in einer bestimmten Situation auftreten können, besser verstanden werden.

Dies lässt sich daran erkennen, dass analysiert wird, ob eine bestimmte sichtbare Summe an verschiedenen Punkten während der Analyse X überschreitet oder gleich X ist. Wenn diese Möglichkeit während der Durchführung der Studie entdeckt wird – was normalerweise durch ein tatsächliches Ergebnis angezeigt wird –, können sie mit einem gewissen Grad an Sicherheit schlussfolgern, dass die maximale Anzahl beobachtbarer Merkmale gleich oder größer ist als ihre ursprüngliche Absicht, X zu überschreiten.

Umgekehrt, wenn sie diese Statistik nach einigen relevanten Iterationen und Berechnungen der Erkundung immer noch nicht finden können, dann gibt es offensichtlich noch weitere unbeantwortete Fragen.

In der Hauptfunktion fordern wir den Benutzer auf, die Anzahl der Würfel (N) einzugeben. Wir erstellen einen Vektor von Vektoren namens Würfel, um die Gesichter jedes Würfels zu speichern. Anschließend iterieren wir N-mal und fragen den Benutzer für jeden Würfel nach der Anzahl der Flächen und den Flächen selbst. Diese Werte speichern wir im Würfelvektor.

Als nächstes bitten wir den Benutzer, den Mindestbetrag (X) einzugeben. Wir übergeben N, X und Würfel an die Funktion checkVisibleSum. Wir werden dementsprechend die Botschaft übermitteln, dass die maximal mögliche Summe der sichtbaren Würfelflächen gleich oder größer als X ist. Entgegen der positiven Aussicht auf diese Situation werden wir jedoch wahrscheinlich Wissen veröffentlichen, weil wir erfahren, dass die Funktion tatsächlich unerwünschte Ergebnisse im Zusammenhang mit X erzeugt.

Methode 2

Algorithmus

  • Zuerst initialisieren Sie eine Variable „visibleSum“ auf 0. Diese Variable speichert die Summe der sichtbaren Gesichter.

  • Durchlaufen Sie jedes Element im Würfelvektor.

  • Ordnen Sie für jeden Würfel die Gesichter in absteigender Reihenfolge an.

  • Berechnen Sie die Summe der ersten N-1 Flächen (mit Ausnahme der größten Fläche) und addieren Sie sie zur sichtbaren Summe.

  • Gib „true“ zurück, wenn die sichtbare Summe größer oder gleich X wird.

  • Wenn nach Abschluss der Iteration keine sichtbare Summe größer oder gleich X gefunden wird, wird „false“ zurückgegeben.

Beispiel

#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;
}

Ausgabe

The maximum sum of visible faces of the dice is at least 15.
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

In diesem Code haben wir dieselbe checkVisibleSum-Funktion wie in der ersten Methode. Der wesentliche Unterschied liegt jedoch in der Berechnung der sichtbaren Summe.

Methode 2 summiert die ersten N-1 Seiten jedes Würfels, mit Ausnahme der größten Seite. Um dies zu erreichen, verwenden wir die Akkumulationsfunktion aus der -Bibliothek. Wir übergeben dice[i].begin() und dice[i].begin() + N - 1 als zu akkumulierenden Bereich und summieren effektiv über die erforderlichen Flächen.

Der Rest des Codes in der Hauptfunktion ist der gleiche wie im vorherigen Beispiel.

Fazit

In diesem Artikel dreht sich unser Thema um die Lösung einer wichtigen Frage zur C++-Codierung. Wie kann man genau feststellen, ob die Summe der größten sichtbaren Flächen eines gegebenen Würfelsatzes (N) mindestens X beträgt? Um diese Frage am besten zu beantworten, haben wir zwei praktische Lösungen gefunden: Stellen Sie erstens sicher, dass die Summe der Ergebnisse jedes Würfelwurfs gleich oder größer als X ist. Zweitens bewerten Sie nur die Summe der ersten N-1-Würfelwürfe und stellen Sie fest, ob sie übereinstimmen oder X überschreiten. Darüber hinaus bieten wir Code-Setup für jede Methode und detaillierte Anleitungen zur Durchführung dieser Verfahren. Zusätzlich stellen wir zwei echte, vollständig ausführbare Codebeispiele zur Verfügung, die auf diesen Methoden basieren. Durch die Nutzung des in diesem Artikel bereitgestellten Wissens und Codes können Sie jetzt sicher das Problem lösen, festzustellen, ob die Summe der größten sichtbaren Flächen von N Würfeln in der C++-Programmierung mindestens X beträgt.

Das obige ist der detaillierte Inhalt vonPrüfen Sie, ob die maximale Summe der sichtbaren Flächen von N Würfeln mindestens X beträgt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen