Table des matières
Algorithme
Approche 1 : - Approche naïve
Exemple
Sortie
Méthode 2 : Méthode efficace
Output
结论
Maison développement back-end C++ Le plus grand nombre n'excédant pas N et ne contenant aucun nombre dans S

Le plus grand nombre n'excédant pas N et ne contenant aucun nombre dans S

Sep 05, 2023 pm 05:17 PM
数字 最大 pas plus que

Le plus grand nombre nexcédant pas N et ne contenant aucun nombre dans S

Le défi de trouver le plus grand nombre ne dépassant pas un nombre N donné et ne contenant aucun des chiffres d'une chaîne S est un problème qui implique la manipulation des chaînes et la théorie des nombres. Le but est de déterminer le plus grand nombre possible. inférieur ou égal à N tout en excluant également tous les chiffres trouvés dans la chaîne S.

Par exemple, considérons un scénario où N est égal à 1000 et S est égal à « 42 ». Dans ce cas, le plus grand nombre qui ne dépasse pas N et ne contient aucun chiffre dans S est 999. En effet, 999 est le plus grand nombre possible formé à partir des chiffres 0, 1, 3, 5, 6, 7, 8 et 9, à l'exclusion des chiffres 4 et 2 dans la chaîne S.

Différentes approches peuvent être utilisées pour résoudre ce problème, comme parcourir tous les nombres jusqu'à N et vérifier si leurs chiffres ne sont pas présents dans S, ou en utilisant des méthodes plus complexes comme la programmation dynamique ou le retour en arrière.

Algorithme

Étape 1 - Nous déclarerons deux variables de chaîne nommées « N » et « S » dans la fonction main().

Étape 2 - Nous passerons ces deux variables en paramètres à la fonction LargestNumberFinder().

Étape 3 - Nous convertirons implicitement les numéros de chaîne N et S en entier pour effectuer des opérations mathématiques telles que la comparaison.

Étape 4 - Nous supprimerons les 0 non significatifs des nombres stockés dans N soit manuellement, soit en créant une fonction qui fera la même chose à chaque fois.

Étape 5 - Ensuite, nous commencerons à comparer les chiffres des deux chaînes et à découvrir quel est le plus grand nombre formé pas plus de « N » qui ne contient aucun chiffre de la chaîne « S ».

Approche 1 : - Approche naïve

La méthode de base pour trouver le plus grand nombre dans une chaîne donnée en utilisant tous les nombres dans une autre chaîne est la suivante. La fonction principale déclare les variables et appelle la fonction LargestNumberFinder. Cette fonction prend deux chaînes en entrée et vérifie chaque valeur inférieure à N contenant tous les chiffres de la chaîne S. Si la condition est remplie, la valeur est renvoyée sous forme de chaîne. La fonction de présence est utilisée pour déterminer si la valeur stockée dans « i » fait partie d'une chaîne S lors de la conversion de S en un type de données entier. La chaîne d'entrée est convertie en entier et une boucle est utilisée pour évaluer la condition. Le code génère la valeur maximale de tous les nombres d'une chaîne donnée qui est également présente dans une autre chaîne.

Exemple

se traduit par :

Exemple

Ce code est une solution qui trouve le plus grand nombre inférieur à N (chaîne d'entrée convertie en entier) composé des chiffres de la chaîne S. Le code utilise deux fonctions, « présence » et « LargestNumberFinder » pour déterminer et renvoyer le plus grand nombre. La fonction de présence prend en entrée un entier « i » et une chaîne « s », vérifie si la valeur stockée dans « i » fait partie de la chaîne « s » et convertit « s » en un type de données entier. La fonction LargestNumberFinder prend deux chaînes « x » et « s » en entrée, convertit « x » en un entier, puis utilise la fonction de présence pour vérifier toutes les valeurs inférieures à N et tous les nombres sont en « s ». La fonction principale déclare la variable et appelle la fonction LargestNumberFinder, qui renvoie le plus grand nombre sous forme de chaîne.

#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);
}
Copier après la connexion

Sortie

77777
Copier après la connexion

Méthode 2 : Méthode efficace

La solution au problème 2, qui consiste à obtenir le plus grand nombre possible en remplaçant les chiffres de la chaîne numérique donnée N par les chiffres de la chaîne donnée S, est une approche efficace. La méthode vérifie d’abord si chaque nombre de N est présent dans S et remplace le premier nombre trouvé dans S par le plus grand nombre de S qui n’est pas dans N. Les nombres restants sont ensuite remplacés par le plus grand nombre de S qui ne se trouve pas dans N. Les zéros non significatifs sont ensuite supprimés et le résultat est renvoyé sous la forme du plus grand nombre possible. Cette méthode est plus efficace que la méthode précédente car elle ne nécessite pas de trier la chaîne.

Exemple

se traduit par :

Exemple

Le code résout le problème de trouver le nombre qui peut être formé à partir d'une chaîne "N" donnée en remplaçant le plus grand chiffre par le chiffre le plus élevé non présent dans la chaîne "S". Le code utilise une méthode efficace pour résoudre le problème. La fonction LargestNumberFinder prend deux entrées de chaîne, "num" et "s", et renvoie le plus grand nombre possible. Le vecteur "vis_s" est utilisé pour stocker les valeurs de la chaîne "s". chaîne " num" qui fait partie de la chaîne "s". Ensuite, il échange ce chiffre avec le chiffre le plus élevé non présent dans la chaîne "s". Le code trouve ensuite le chiffre le plus élevé non trouvé dans la chaîne "s" et remplace le reste du chiffre. chiffres dans la chaîne "num" avec ce chiffre. Les zéros non significatifs sont supprimés de la chaîne finale, et si la chaîne est vide, la fonction renvoie "0". Le code génère le résultat en appelant la fonction avec les entrées "N" et ". 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;
}
Copier après la connexion

Output

149999
Copier après la connexion

结论

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

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

iOS 17 : Comment changer le style d'horloge de l'iPhone en mode veille iOS 17 : Comment changer le style d'horloge de l'iPhone en mode veille Sep 10, 2023 pm 09:21 PM

La veille est un mode d'écran de verrouillage qui s'active lorsque l'iPhone est branché sur le chargeur et orienté en orientation horizontale (ou paysage). Il se compose de trois écrans différents, dont l'un affiche l'heure en plein écran. Lisez la suite pour savoir comment changer le style de votre horloge. Le troisième écran de StandBy affiche les heures et les dates dans différents thèmes que vous pouvez faire glisser verticalement. Certains thèmes affichent également des informations supplémentaires, comme la température ou la prochaine alarme. Si vous maintenez une horloge enfoncée, vous pouvez basculer entre différents thèmes, notamment numérique, analogique, mondial, solaire et flottant. Float affiche l'heure dans de grands nombres de bulles dans des couleurs personnalisables, Solar a une police plus standard avec un motif d'éruption solaire dans différentes couleurs et World affiche le monde en mettant en surbrillance

Générer des nombres et des chaînes aléatoires en JavaScript Générer des nombres et des chaînes aléatoires en JavaScript Sep 02, 2023 am 08:57 AM

La possibilité de générer des nombres aléatoires ou des chaînes alphanumériques s'avère utile dans de nombreuses situations. Vous pouvez l'utiliser pour faire apparaître des ennemis ou de la nourriture à différents endroits du jeu. Vous pouvez également l'utiliser pour suggérer des mots de passe aléatoires aux utilisateurs ou créer des noms de fichiers pour enregistrer des fichiers. J'ai écrit un tutoriel sur la façon de générer des chaînes alphanumériques aléatoires en PHP. J'ai dit au début de cet article que peu d'événements sont véritablement aléatoires, et il en va de même pour la génération de nombres aléatoires ou de chaînes. Dans ce tutoriel, je vais vous montrer comment générer une chaîne alphanumérique pseudo-aléatoire en JavaScript. Générer des nombres aléatoires en JavaScript Commençons par générer des nombres aléatoires. La première méthode qui me vient à l’esprit est Math.random(), qui renvoie un float

Programme C++ pour arrondir un nombre à n décimales Programme C++ pour arrondir un nombre à n décimales Sep 12, 2023 pm 05:13 PM

Représenter des nombres en sortie est une tâche intéressante et importante lors de l’écriture d’un programme dans n’importe quel langage. Pour les types entiers (données de type court, long ou moyen), il est facile de représenter des nombres en sortie. Pour les nombres à virgule flottante (de type flottant ou double), nous devons parfois les arrondir à un nombre spécifique de décimales. Par exemple, si nous voulons représenter 52,24568 sous forme de trois décimales, un prétraitement est nécessaire. Dans cet article, nous présenterons plusieurs techniques pour représenter les nombres à virgule flottante avec un nombre spécifique de décimales par arrondi. Parmi les différentes approches, il est important d'utiliser une chaîne de format de type C, d'utiliser l'argument de précision et d'utiliser la fonction round() de la bibliothèque mathématique. Regardons-les un par un. avec

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,

Vérifiez s'il s'agit d'un nombre en utilisant la fonction is_numeric() en PHP Vérifiez s'il s'agit d'un nombre en utilisant la fonction is_numeric() en PHP Jun 27, 2023 pm 05:00 PM

Dans le langage de programmation PHP, la fonction is_numeric() est une fonction très couramment utilisée, utilisée pour déterminer si une variable ou une valeur est un nombre. En programmation réelle, il est souvent nécessaire de vérifier la valeur saisie par l'utilisateur pour déterminer s'il s'agit d'un type numérique. Dans ce cas, la fonction is_numeric() peut être utilisée pour déterminer. 1. Introduction à la fonction is_numeric() La fonction is_numeric() est une fonction utilisée pour détecter si une variable ou une valeur est un nombre. Renvoie tru si la variable ou la valeur est un nombre

Nombres en Java (avec préfixe 0 et chaînes) Nombres en Java (avec préfixe 0 et chaînes) Aug 29, 2023 pm 01:45 PM

Nombres en Java Il est important de comprendre que la classe nombre n'est pas une classe tangible mais une classe abstraite. À l’intérieur, nous avons un ensemble de classes wrapper qui définissent ses fonctionnalités. Ces classes wrapper incluent Integer, Byte, Double, Short, Float et Long. Vous remarquerez peut-être qu'il s'agit des mêmes types de données de base dont nous avons parlé plus tôt, mais ils sont représentés comme des classes distinctes avec des noms en majuscules pour se conformer à la convention de dénomination des classes. Le compilateur convertit automatiquement les types de données primitifs en objets et vice versa selon les besoins d'une fonction ou d'une portée de programme particulière, et les classes numériques font partie du package java.lang. Ce processus est appelé autoboxing et unboxing. En saisissant la nature abstraite des classes numériques et de leurs classes wrapper correspondantes, nous pouvons

Rechercher des nombres qui ne sont divisibles par aucun nombre dans une plage, à l'aide de C++ Rechercher des nombres qui ne sont divisibles par aucun nombre dans une plage, à l'aide de C++ Sep 13, 2023 pm 09:21 PM

Dans cet article, nous aborderons le problème de la recherche de nombres compris entre 1 et n (donnés) qui ne sont divisibles par aucun nombre compris entre 2 et 10. Comprenons cela avec quelques exemples - Entrée : num = 14 Sortie : 3 Explication : Il y a trois nombres, 1, 11 et 13, qui ne sont pas divisibles. Entrée : num = 21 Sortie : 5 Explication : Il y a cinq nombres 1, 11, 13, 17 et 19, qui ne sont pas divisibles. Méthode simple résolue si.

Programme Java pour vérifier si un nombre est divisible par 5 Programme Java pour vérifier si un nombre est divisible par 5 Sep 13, 2023 pm 09:01 PM

En mathématiques, la règle de divisibilité de 5 stipule que si un nombre se termine par 0 ou 5, il est divisible par 5. Il existe une autre façon de déterminer la règle de divisibilité de 5, si le reste est 0, renvoie alors le nombre divisible par 5. L'opérateur mod(%) est couramment utilisé dans la programmation pour la division entière. Donnons un exemple. Le nombre donné est 525, le nombre se termine par 5 et est divisible par 5. Le nombre donné est 7050 qui se termine par 0 et est divisible par 5. Le nombre donné est 678 qui ne se termine pas par 0 et 5 et n'est pas divisible par 5. Dans cet article, nous résoudrons la question de savoir si le nombre est divisible par 5. Algorithme Les étapes suivantes sont celles où nous utiliserons les packages java.util.* pour obtenir la saisie utilisateur des types de données primitifs. de la classe principale

See all articles