Inhaltsverzeichnis
Algorithmus
Ansatz 1: - Naiver Ansatz
Beispiel
Ausgabe
Methode 2: Effiziente Methode
Output
结论
Heim Backend-Entwicklung C++ Die größte Zahl, die N nicht überschreitet und keine Zahl in S enthält

Die größte Zahl, die N nicht überschreitet und keine Zahl in S enthält

Sep 05, 2023 pm 05:17 PM
数字 最大 nicht mehr als

Die größte Zahl, die N nicht überschreitet und keine Zahl in S enthält

Die Herausforderung, die größte Zahl zu finden, die eine bestimmte Zahl N nicht überschreitet und keine der Ziffern in einer Zeichenfolge S enthält, ist ein Problem, das Zeichenfolgenmanipulation und Zahlentheorie erfordert. Das Ziel besteht darin, die größtmögliche Zahl zu bestimmen kleiner oder gleich N, wobei auch alle in der Zeichenfolge S.

gefundenen Ziffern ausgeschlossen werden

Stellen Sie sich zum Beispiel ein Szenario vor, in dem N gleich 1000 und S gleich „42“ ist. In diesem Fall ist die größte Zahl, die N nicht überschreitet und keine Ziffern in S enthält, 999. Dies liegt daran, dass 999 die größtmögliche Zahl ist, die aus den Ziffern 0, 1, 3, 5, 6, 7, 8 und 9 gebildet wird, mit Ausnahme der Ziffern 4 und 2 in der Zeichenfolge S.

Verschiedene Ansätze können verwendet werden, um dieses Problem zu lösen, z. B. das Durchlaufen aller Zahlen bis N und das Überprüfen, ob ihre Ziffern nicht in S vorhanden sind, oder die Verwendung komplexerer Methoden wie dynamische Programmierung oder Backtracking.

Algorithmus

Schritt 1 − Wir werden in der Funktion main() zwei String-Variablen mit den Namen „N“ und „S“ deklarieren.

Schritt 2 – Wir übergeben diese beiden Variablen als Parameter an die Funktion LargestNumberFinder().

Schritt 3 - Wir werden die Zeichenfolgennummern N und S implizit in Ganzzahlen umwandeln, um mathematische Operationen wie Vergleiche durchzuführen.

Schritt 4 – Wir entfernen die führenden Nullen aus den in N gespeicherten Zahlen, entweder manuell oder indem wir eine Funktion erstellen, die jedes Mal das Gleiche tut.

Schritt 5 - Dann beginnen wir mit dem Vergleichen der Ziffern beider Zeichenfolgen und finden heraus, welche die größte Zahl ist, die nicht mehr als „N“ bildet und keine Ziffer aus der Zeichenfolge „S“ enthält.

Ansatz 1: - Naiver Ansatz

Der grundlegende Weg, die größte Zahl in einer bestimmten Zeichenfolge mithilfe aller Zahlen in einer anderen Zeichenfolge zu finden, ist wie folgt. Die Hauptfunktion deklariert Variablen und ruft die LargestNumberFinder-Funktion auf. Diese Funktion verwendet zwei Zeichenfolgen als Eingabe und prüft jeden Wert kleiner als N, der alle Ziffern in Zeichenfolge S enthält. Wenn die Bedingung erfüllt ist, wird der Wert im String-Format zurückgegeben. Die Anwesenheitsfunktion wird verwendet, um zu bestimmen, ob der in „i“ gespeicherte Wert Teil einer Zeichenfolge S ist, während S in einen ganzzahligen Datentyp konvertiert wird. Die Eingabezeichenfolge wird in eine Ganzzahl umgewandelt und eine Schleife wird verwendet, um die Bedingung auszuwerten. Der Code gibt den Maximalwert aller Zahlen in einem bestimmten String aus, der auch in einem anderen String vorhanden ist.

Beispiel

wird übersetzt als:

Beispiel

Dieser Code ist eine Lösung, die die größte Zahl kleiner als N (in Ganzzahl umgewandelte Eingabezeichenfolge) findet, die aus den Ziffern in der Zeichenfolge S besteht. Der Code verwendet zwei Funktionen, „attendance“ und „LargestNumberFinder“, um die größte Zahl zu ermitteln und zurückzugeben. Die Anwesenheitsfunktion nimmt als Eingabe eine Ganzzahl „i“ und eine Zeichenfolge „s“, prüft, ob der in „i“ gespeicherte Wert Teil der Zeichenfolge „s“ ist, und konvertiert „s“ in einen ganzzahligen Datentyp. Die LargestNumberFinder-Funktion verwendet zwei Zeichenfolgen „x“ und „s“ als Eingabe, wandelt „x“ in eine Ganzzahl um und verwendet dann die Anwesenheitsfunktion, um alle Werte zu überprüfen, die kleiner als N sind und alle Zahlen in „s“ vorliegen. Die Hauptfunktion deklariert die Variable und ruft die LargestNumberFinder-Funktion auf, die die größte Zahl als Zeichenfolge zurückgibt.

#include <iostream>
#include <string>
#include <vector>

// function to check whether value stored in ‘i’ is part of string S while also converting S into integer data type.
bool attendance(int i, std::string s) {
   while (i) {
      int first_digit = i % 10;
      i /= 10;
      int t = std::stoi(s);
      bool found = false;
      while (t) {
         int second_digit = t % 10;
         t /= 10;
         if (second_digit == first_digit) {
            found = true;
            break;
         }
      }
      if (!found)
         return false;
   }
   return true;
}

// function to input two strings and check for each value less than N with all digits present in S.
std::string LargestNumberFinder(std::string x, std::string s) {
   int N = std::stoi(x);
   for (int i = N; i >= 1; i--) {
      if (attendance(i, s)) {
         return std::to_string(i);
      }
   }
   return "-1";
}

// main function to declare the variables and call the function.
int main() {
   std::string N = "100709";
   std::string S = "70";
   std::cout << LargestNumberFinder(N, S);
}
Nach dem Login kopieren

Ausgabe

77777
Nach dem Login kopieren

Methode 2: Effiziente Methode

Die Lösung für Problem 2, die darin besteht, die größtmögliche Zahl zu erhalten, indem die Ziffern der gegebenen numerischen Zeichenfolge N durch die Ziffern der gegebenen Zeichenfolge S ersetzt werden, ist ein effizienter Ansatz. Die Methode prüft zunächst, ob jede Zahl von N in S vorhanden ist, und ersetzt die erste in S gefundene Zahl durch die größte Zahl in S, die nicht in N enthalten ist. Die restlichen Zahlen werden dann durch die größte Zahl in S ersetzt, die nicht in N liegt. Anschließend werden führende Nullen entfernt und das Ergebnis als größtmögliche Zahl zurückgegeben. Diese Methode ist effizienter als die vorherige Methode, da die Zeichenfolge nicht sortiert werden muss.

Beispiel

wird übersetzt als:

Beispiel

Der Code löst das Problem, die Zahl zu finden, die aus einer gegebenen Zeichenfolge „N“ gebildet werden kann, indem er die größte Ziffer durch die höchste Ziffer ersetzt, die in der Zeichenfolge „S“ nicht vorhanden ist. Der Code verwendet eine effiziente Methode, um das Problem zu lösen. Die LargestNumberFinder-Funktion nimmt zwei Zeichenfolgeneingaben entgegen, „num“ und „s“, und gibt die größtmögliche Zahl zurück. Der Vektor „vis_s“ wird verwendet, um die Werte der Zeichenfolge „s“ zu speichern Zeichenfolge „num“, die Teil der Zeichenfolge „s“ ist, tauscht dann die höchste Ziffer aus, die in der Zeichenfolge „s“ nicht vorhanden ist, und ersetzt den Rest Ziffern in der Zeichenfolge „num“ mit dieser Ziffer. Die führenden Nullen werden aus der endgültigen Zeichenfolge entfernt. Wenn die Zeichenfolge leer ist, gibt der Code das Ergebnis aus, indem er die Funktion mit den Eingaben „N“ und „ S" .

#include <iostream>
#include <string>
#include <vector>

using namespace std;

// function to check for all values of String N with String S and replacing the digit if found same with the largest possible digit not present in S.
string LargestNumberFinder(string num, string s) {
   vector<bool> vis_s(10, false);
   for (int i = 0; i < (int)s.size(); i++) {
      vis_s[int(s[i]) - 48] = true;
   }
   int n = num.size();
   int in = -1;
   for (int i = 0; i < n; i++) {
      if (vis_s[(int)num[i] - '0']) {
         in = i;
         break;
      }
   }
   if (in == -1) {
      return num;
   }
   for (char dig = num[in]; dig >= '0'; dig--) {
      if (vis_s[(int)dig - '0'] == 0) {
         num[in] = dig;
         break;
      }
   }
   char LargestDig = '0';
   for (char dig = '9'; dig >= '0'; dig--) {
      if (vis_s[dig - '0'] == false) {
         LargestDig = dig;
         break;
      }
   }
   for (int i = in + 1; i < n; i++) {
      num[i] = LargestDig;
   }
   int Count = 0;
   for (int i = 0; i < n; i++) {
      if (num[i] == '0')
         Count++;
      else
         break;
   }
   num.erase(0, Count);
   if ((int)num.size() == 0)
      return "0";
   return num;
}
int main() {
   string N = "161516";
   string S = "756";
   cout << LargestNumberFinder(N, S);
   return 0;
}
Nach dem Login kopieren

Output

149999
Nach dem Login kopieren

结论

通过这篇文章,我们更接近理解这些问题背后的原因,并理解了这些概念,这些概念将帮助我们在之前提到的重大实际问题中使用这些基本概念。就像在我们的代码中,我们分别解决每个问题,然后像制作美丽的手工品一样将代码缝合在一起,同样,我们将使用这个概念,尝试逐个解决问题。我们通常会从朴素的方法开始,但通过敏锐的眼光和努力,我们会找到更高效的方法。谁知道在阅读完这篇文章后,你会找到更好、更高效的方法,并进一步简化解决方案。所以,让我们坚持我们的信念和对思维和编码的信任,同时告别。

Das obige ist der detaillierte Inhalt vonDie größte Zahl, die N nicht überschreitet und keine Zahl in S enthält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

iOS 17: So ändern Sie den Uhrstil des iPhone im Standby-Modus iOS 17: So ändern Sie den Uhrstil des iPhone im Standby-Modus Sep 10, 2023 pm 09:21 PM

Standby ist ein Sperrbildschirmmodus, der aktiviert wird, wenn das iPhone an das Ladegerät angeschlossen und horizontal (oder im Querformat) ausgerichtet ist. Es besteht aus drei verschiedenen Bildschirmen, von denen einer im Vollbildmodus angezeigt wird. Lesen Sie weiter, um zu erfahren, wie Sie den Stil Ihrer Uhr ändern können. Auf dem dritten Bildschirm von StandBy werden Uhrzeiten und Daten in verschiedenen Themen angezeigt, die Sie vertikal wischen können. Einige Themes zeigen auch zusätzliche Informationen an, wie z. B. Temperatur oder nächster Alarm. Wenn Sie eine beliebige Uhr gedrückt halten, können Sie zwischen verschiedenen Themen wechseln, darunter Digital, Analog, Welt, Solar und Floating. Float zeigt die Zeit in großen Blasenzahlen in anpassbaren Farben an, Solar verfügt über eine Standardschriftart mit einem Sonneneruptionsdesign in verschiedenen Farben und World zeigt die Welt durch Hervorhebung an

Generieren Sie Zufallszahlen und Zeichenfolgen in JavaScript Generieren Sie Zufallszahlen und Zeichenfolgen in JavaScript Sep 02, 2023 am 08:57 AM

Die Möglichkeit, Zufallszahlen oder alphanumerische Zeichenfolgen zu generieren, ist in vielen Situationen praktisch. Sie können damit an verschiedenen Orten im Spiel Feinde oder Nahrung hervorbringen. Sie können es auch verwenden, um Benutzern zufällige Passwörter vorzuschlagen oder Dateinamen zum Speichern von Dateien zu erstellen. Ich habe ein Tutorial darüber geschrieben, wie man in PHP zufällige alphanumerische Zeichenfolgen generiert. Ich habe am Anfang dieses Beitrags gesagt, dass nur wenige Ereignisse wirklich zufällig sind, und das Gleiche gilt für die Zufallszahlen- oder String-Generierung. In diesem Tutorial zeige ich Ihnen, wie Sie in JavaScript eine pseudozufällige alphanumerische Zeichenfolge generieren. Generieren von Zufallszahlen in JavaScript Beginnen wir mit der Generierung von Zufallszahlen. Die erste Methode, die mir in den Sinn kommt, ist Math.random(), die einen Float zurückgibt

C++-Programm zum Runden einer Zahl auf n Dezimalstellen C++-Programm zum Runden einer Zahl auf n Dezimalstellen Sep 12, 2023 pm 05:13 PM

Zahlen als Ausgabe darzustellen ist eine interessante und wichtige Aufgabe beim Schreiben eines Programms in einer beliebigen Sprache. Bei ganzzahligen Typen (Daten vom Typ kurz, lang oder mittel) ist es einfach, Zahlen als Ausgabe darzustellen. Bei Gleitkommazahlen (Float- oder Double-Typ) müssen wir sie manchmal auf eine bestimmte Anzahl von Dezimalstellen runden. Wenn wir beispielsweise 52,24568 mit drei Dezimalstellen darstellen möchten, ist eine gewisse Vorverarbeitung erforderlich. In diesem Artikel stellen wir verschiedene Techniken vor, um Gleitkommazahlen durch Runden auf eine bestimmte Anzahl von Dezimalstellen darzustellen. Unter den verschiedenen Ansätzen ist es wichtig, eine C-ähnliche Formatzeichenfolge zu verwenden, das Präzisionsargument zu verwenden und die Funktion „round()“ aus der Mathematikbibliothek zu verwenden. Schauen wir sie uns einzeln an. mit

Verwenden Sie C++, um Code zu schreiben, um die N-te nichtquadratische Zahl zu finden Verwenden Sie C++, um Code zu schreiben, um die N-te nichtquadratische Zahl zu finden Aug 30, 2023 pm 10:41 PM

Wir alle kennen Zahlen, die nicht das Quadrat einer Zahl sind, wie zum Beispiel 2, 3, 5, 7, 8 usw. Es gibt N nichtquadratische Zahlen und es ist unmöglich, jede Zahl zu kennen. In diesem Artikel erklären wir alles über quadratlose oder nichtquadratische Zahlen und Möglichkeiten, die N-te nichtquadratische Zahl in C++ zu finden. N-te nichtquadratische Zahl Wenn eine Zahl das Quadrat einer ganzen Zahl ist, wird die Zahl als perfektes Quadrat bezeichnet. Einige Beispiele für perfekte Quadratzahlen sind -1isquadratvon14isquadratvon29isquadratvon316isquadratvon425isquadratvon5. Wenn eine Zahl nicht das Quadrat einer ganzen Zahl ist, wird die Zahl als nichtquadratisch bezeichnet. Die ersten 15 nichtquadratischen Zahlen sind beispielsweise -2,3,5,6,

Überprüfen Sie mit der Funktion is_numeric() in PHP, ob es sich um eine Zahl handelt Überprüfen Sie mit der Funktion is_numeric() in PHP, ob es sich um eine Zahl handelt Jun 27, 2023 pm 05:00 PM

In der Programmiersprache PHP ist die Funktion is_numeric() eine sehr häufig verwendete Funktion, mit der ermittelt wird, ob eine Variable oder ein Wert eine Zahl ist. Bei der tatsächlichen Programmierung ist es häufig erforderlich, den vom Benutzer eingegebenen Wert zu überprüfen, um festzustellen, ob es sich um einen numerischen Typ handelt. In diesem Fall kann die Funktion is_numeric() zur Bestimmung verwendet werden. 1. Einführung in die Funktion is_numeric() Die Funktion is_numeric() ist eine Funktion, die verwendet wird, um zu erkennen, ob eine Variable oder ein Wert eine Zahl ist. Gibt tru zurück, wenn die Variable oder der Wert eine Zahl ist

Zahlen in Java (mit 0-Präfix und Zeichenfolgen) Zahlen in Java (mit 0-Präfix und Zeichenfolgen) Aug 29, 2023 pm 01:45 PM

Zahlen in Java Es ist wichtig zu verstehen, dass die Zahlenklasse keine greifbare Klasse, sondern eine abstrakte Klasse ist. Darin befindet sich eine Reihe von Wrapper-Klassen, die seine Funktionalität definieren. Zu diesen Wrapper-Klassen gehören Integer, Byte, Double, Short, Float und Long. Möglicherweise stellen Sie fest, dass es sich dabei um dieselben grundlegenden Datentypen handelt, die wir zuvor besprochen haben, sie werden jedoch als separate Klassen mit Großbuchstaben dargestellt, um der Klassenbenennungskonvention zu entsprechen. Der Compiler konvertiert automatisch primitive Datentypen in Objekte und umgekehrt, je nach Bedarf für eine bestimmte Funktion oder einen bestimmten Programmumfang. Numerische Klassen sind Teil des java.lang-Pakets. Dieser Vorgang wird Autoboxing und Unboxing genannt. Indem wir die abstrakte Natur numerischer Klassen und ihrer entsprechenden Wrapper-Klassen verstehen, können wir dies tun

Finden Sie mit C++ Zahlen, die durch keine Zahl in einem Bereich teilbar sind Finden Sie mit C++ Zahlen, die durch keine Zahl in einem Bereich teilbar sind Sep 13, 2023 pm 09:21 PM

In diesem Artikel werden wir das Problem diskutieren, Zahlen zwischen 1 und n (vorgegeben) zu finden, die nicht durch eine Zahl zwischen 2 und 10 teilbar sind. Lassen Sie uns dies anhand einiger Beispiele verstehen: Eingabe: Nummer = 14 Ausgabe: 3 Erläuterung: Es gibt drei Zahlen, 1, 11 und 13, die nicht teilbar sind. Eingabe: Nummer = 21 Ausgabe: 5 Erläuterung: Es gibt fünf Zahlen 1, 11, 13, 17 und 19, die nicht teilbar sind

Java-Programm zum Überprüfen, ob eine Zahl durch 5 teilbar ist Java-Programm zum Überprüfen, ob eine Zahl durch 5 teilbar ist Sep 13, 2023 pm 09:01 PM

In der Mathematik besagt die Teilbarkeitsregel von 5, dass eine Zahl, die mit 0 oder 5 endet, durch 5 teilbar ist. Es gibt eine andere Möglichkeit, die Teilbarkeitsregel von 5 zu bestimmen: Wenn der Rest 0 ist, wird die Zahl zurückgegeben, die durch 5 teilbar ist. Der mod(%)-Operator wird häufig in der Programmierung für die Ganzzahldivision verwendet. Geben wir ein Beispiel. Die angegebene Zahl ist 525, die Zahl endet mit 5 und ist durch 5 teilbar. Die angegebene Zahl ist 7050, die mit 0 endet und durch 5 teilbar ist. Die angegebene Zahl ist 678, die nicht mit 0 und 5 endet und nicht durch 5 teilbar ist. In diesem Artikel werden wir die Frage klären, ob die Zahl durch 5 teilbar ist. Algorithmus In den folgenden Schritten verwenden wir die java.util.*-Pakete, um Benutzereingaben für primitive Datentypen zu erhalten. aus der Hauptklasse

See all articles