Informatică, întrebare adresată de maxtudor, 9 ani în urmă

Se citesc n numere naturale de maxim 10 cifre fiecare, afisati nr in ordine descrescatoare dupa numarul de cifre distincte .
Daca exista 2 numere care au acelasi nr de cifre distincte se vor ordona dupa valoare.

Răspunsuri la întrebare

Răspuns de Emil1234
2
#include <iostream>
using namespace std;
int poz[11];
int main() {
  unsigned n,i,nr;
  cin>>n;
  long v[n+1],nrdist[n+1],p;
  for(i=0;i<n;i++){
          cin>>v[i];
          p = v[i];
          nr = 0;
          while(p){
              poz[p%10]++;
              p/=10;
           }
          for(int i=0;i<10;i++){
                   if(poz[i]!=0)
                        nr++;
                    poz[i] = 0;
           }
           nrdist[i] = nr;
  }
  for(i=0;i<n-1;i++)
     for(int j=i+1;j<n;j++)
              if(nrdist[i]<nrdist[j]){
                     swap(nrdist[i],nrdist[j]);
                     swap(v[i],v[j]);
               }
  for(i=0;i<n;i++)
           cout<<v[i]<<" ";
  return 0;
}
Alte întrebări interesante