Răspuns :
Răspuns:
int cmmnr (int m)
{
if (m<10) return m;
else {
int v[11],i,n,t;
for (i=0;i<=10;++i) v[i]=0;
int nc=0;
while (m) {
++nc; v[nc]=m%10; m/=10;
}
for (i=1;i<nc;++i)
for (int j=i+1;j<=nc;++j) {
if (v[j]<v[i]){
t=v[i]; v[i]=v[j]; v[j]=t;
}
}
if (v[1]==0) {
i=1;
while (v[i]==0) ++i;
t=v[1]; v[1]=v[i]; v[i]=t;
}
n=0;
for (i=1; i<=nc; ++i) n=n*10+v[i];
return n;
}
}
Explicație:
problema am rezolvat-o in apr 2018, azi asi face cu vectorul de frecventa ca nu ar fi necesara ordonarea vectorului de cifre. poate incerci... :)))
Asi incerca si eu ... daca am putea comenta rezolvarile...
Iata viziunea de azi//// intreg codul (nu numai cmmnr )
cu vectorul de frecventa ..... mai mult mi-a placut aceasta varianta... succese la cercetare :)))
#include <iostream>
using namespace std;
int cmmnr(int m)
{
if (m<10) return m;
else
{
int v[11]={0}, i,n=0,t;
while (m)
{
++v[m%10];
m/=10;
}
if (v[0]>0)
{
i=1; while (v[i]==0) ++i;
n=i;
--v[i];
}
for (i=0; i<10; i++)
{
if (v[i])
{
for (t=1; t<=v[i]; t++)
n=n*10+i;
}
}
return n;
}
}
int main()
{
int m;
cin >> m;
cout << cmmnr(m);
return 0;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!