Răspuns :
Răspuns:
#include <algorithm>
#include <iostream>
using std::cout, std::cin, std::endl, std::sort;
/* Funcția returneză numărul de cifre al unui număr */
static size_t nrCifre(int numar) {
size_t contorCifre{}; // ai un contor care inițial este egal cu 0
while (numar) { // cât timp numărul este diferit de 0
++contorCifre; // incrementăm contorul
numar /= 10; // și împărțim la 10 pentru a micșora numărul
}
return contorCifre; // la final returnăm contorul
}
int main() {
// nrCitit va fi variabila în care salvăm numărul de la tastatură, de i ne vom folosi pentru a adăuga în vector
int nrCitit, i{};
size_t dimensiuneVector;
cout << "Introdu un numar >> ";
cin >> nrCitit; // citim numărul
// creăm un vector fix de dimensiunea de care avem nevoie dacă numărul citit este 1234 dimensiunea vectorului va fi 4
dimensiuneVector = nrCifre(nrCitit);
int *vectorCifre = new int[dimensiuneVector];
// cât timp nrCitit este diferit de 0
while (nrCitit) {
vectorCifre[i++] =
nrCitit % 10; // luăm ultima cifră și-o adăugăm în vector
nrCitit /= 10;
}
// sortăm descrescător vectorul
sort(vectorCifre, vectorCifre + dimensiuneVector,
[](const int &primulNumar, const int &alDoileaNumar) -> bool {
return primulNumar > alDoileaNumar;
});
// și după efectiv afișăm cifrele (ne rezultă automat cel mai mare număr ce se poate forma cu cifrele numărului citit deoarece am sortat descrescător cifrele numărului citit din vector)
for (size_t j = 0; j < dimensiuneVector; ++j) cout << vectorCifre[j];
cout << endl;
// la final eliberăm memoria
delete[] vectorCifre;
return 0;
}
Explicație:
Poate nu e cea mai rapidă soluție, 100% sunt altele mai bune dar își face treaba și sincer mie mi se pare logică și ușoară.
Iei cifrele numărului, le bagi într-un vector, sortezi descrescător vectorul și după-l afișezi.
Mai ai o soluție ( mai eficientă ) care se folosește de un „hashed array” în care vei salva de câte ori apare cifra în număr și după parcurgi array-ul și calculezi cifrele... mie mi se pare mai complicată
Dacă cauți "Find maximum number that can be formed using digits of a given number" e primul rezultat de la GeekForGeeks, o găsești acolo.
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!