Pagini recente » Cod sursa (job #33551) | Cod sursa (job #2333754) | Cod sursa (job #1502059) | Cod sursa (job #1693511) | Cod sursa (job #1976632)
#include <iostream>
#include<fstream>
#include<cstring>
using namespace std;
struct trie
{
short nr;
trie* v[10];
trie()
{
nr=0;
for(int i=0;i<10;++i)
this->v[i]=NULL;
}
}*r[20];
char s[30];
int i,j,n;
/*inline int lungime(char s[])
{
if(s[8])return 9;
if(!s[1])return 1;
int ls=1,ld=7,m=4;
while(ls<ld)
{
if(s[m] && !s[m+1])return m+1;
else
{
if(s[m+1])
{
ls=m+1;
m=(ls+ld)/2;
}
else
{
ld=m-1;
m=(ls+ld)/2;
}
}
}
return ls;
}*/
inline void ad(char s[])
{
int k=strlen(s),i=0;
trie *p=r[k];
while(p->v[ s[i] - '0' ]!=NULL && i<k)
{
p=p->v[ s[i] - '0' ];
++i;
}
while(i<k)
{
p->v[ s[i] - '0' ]=new trie;
p=p->v[ s[i] - '0' ];
++i;
}
p->nr++;
}
ofstream g("algsort.out");
void showtime(trie *root,int dim,int l)
{
if(dim>l)
{
for(int i=0;i<root->nr;++i)
g<<s<<" ";
return ;
}
for(int i=0;i<10;++i)
if(root->v[i]!=NULL)
{
s[dim-1]=i+'0';
showtime(root->v[i],dim+1,l);
}
}
int main()
{
ifstream f("algsort.in");
f>>n;
for(i=1;i<11;++i)r[i]=new trie;
for(i=0;i<n;++i)
{
f>>s;
ad(s);
}
memset(s,0,30);
for(i=1;i<11;++i)
showtime(r[i],1,i);
return 0;
}