Pagini recente » Cod sursa (job #3141028) | Cod sursa (job #1192358) | Cod sursa (job #2645760) | Cod sursa (job #61059) | Cod sursa (job #2542397)
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define NMAX 36000
using namespace std;
int n,k,original;
char cuvinte[17];
FILE *fin,*fout;
struct unice
{
int ap;
int lung;
int litere[17];
} v[NMAX+3];
void caut_structura(int h[],int lungime)
{
for(int i=1; i<=k; i++)
{
if(v[i].lung==lungime)
{
int ok=1;
for(int j=0; j<=lungime; j++)
{
if(v[i].litere[j]!=h[j])
{
ok=0;
}
}
if(ok==1)
{
v[i].ap++;
if(v[i].ap==2)
{
original--;
}
return;
}
}
}
k++;
v[k].lung=lungime;
original++;
for(int j=0; j<=lungime; j++)
{
v[k].litere[j]=h[j];
}
v[k].ap=1;
}
void afis(int h[],int nivel)
{
for(int i=0; i<nivel; i++)
{
fprintf(fout,"%d",h[i]);
}
fprintf(fout,"\n");
}
int main()
{
fin=fopen("restante.in","r");
fout=fopen("restante.out","w");
fscanf(fin,"%d\n",&n);
int h[16];
for(int i=1; i<=n; i++)
{
fgets(cuvinte,16,fin);
int lung=strlen(cuvinte);
lung--;
for(int j=0; j<lung; j++)
{
h[j]=cuvinte[j]-'a';
}
stable_sort(h,h+lung);
//afis(h,lung);
caut_structura(h,lung);
}
fprintf(fout,"%d",original);
return 0;
}