Pagini recente » Cod sursa (job #1879118) | Cod sursa (job #2725255) | Cod sursa (job #1683636) | Cod sursa (job #1761110) | Cod sursa (job #583001)
Cod sursa(job #583001)
#include <iostream>
#include <memory.h>
#include <cstdlib>
#define TO_INT(x) (x-'0')
#define TO_CHAR(x) (x+'0')
using namespace std;
struct cTrie
{
int number;
cTrie *next[10];
cTrie()
{
memset(next, 0, 10*sizeof(cTrie*));
number = 0;
}
};
cTrie number_trie;
char number[20];
void insert(cTrie *trie, char *s)
{
if(*s==0)
trie->number++;
else
{
if(trie->next[TO_INT(*s)] == 0)
trie->next[TO_INT(*s)] = new cTrie;
insert(trie->next[TO_INT(*s)], s+1);
}
}
void show(cTrie *trie, int idx)
{
int multiplicity = trie->number;
number[idx]=0;
while(multiplicity--)
cout<<atoi(number)<<" ";
for(int i=0; i<10; ++i)
if(trie->next[i])
{
number[idx] = TO_CHAR(i);
show(trie->next[i], idx+1);
}
}
int main ()
{
int n, length, i, j;
char number[20], temp[20];
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
cin>>n;
while(n>0)
{
cin>>temp;
memset(number, '0', sizeof(number));
length = strlen(temp);
number[11]=0;
for(i=10, j=length-1; j>=0; --j, --i)
number[i]=temp[j];
insert(&number_trie, number);
--n;
}
show(&number_trie, 0);
};