Pagini recente » Cod sursa (job #86718) | Cod sursa (job #370080) | Cod sursa (job #2065305) | Cod sursa (job #2826293) | Cod sursa (job #179412)
Cod sursa(job #179412)
#include <stdio.h>
#include <string.h>
FILE *f,*g;
char a[36505][20],cautat[20];
int i,n,contor,ok;
int divide(int ls, int ld)
{
int s,d;
char aux[20];
s=ls;
d=ld;
strcpy(aux,a[ls]);
while(s<d)
{
while((s<d)&&(strcmp(a[d],aux)>0))d--;
strcpy(a[s],a[d]);
while((s<d)&&(strcmp(a[s],aux)<=0))s++;
strcpy(a[d],a[s]);
}
strcpy(a[s],aux);
return s;
}
void quick(int ls, int ld)
{
int k;
if(ls<ld)
{
k=divide(ls,ld);
quick(ls,k-1);
quick(k+1,ld);
}
}
void sorteaza(int x)
{
int i,j,len,pmin;
char min;
len=strlen(a[x]);
for(i=0;i<len-1;i++)
{
min=a[x][i];
pmin=i;
for(j=i+1;j<len;j++)
if(a[x][j]<min)
{
min=a[x][j];
pmin=j;
}
a[x][pmin]=a[x][i];
a[x][i]=min;
}
}
int main()
{
f=fopen("restante.in","r");
g=fopen("restante.out","w");
fscanf(f,"%d\n",&n);
for(i=1;i<=n;i++)
fscanf(f,"%s\n",&a[i]);
//sortam literele din cuvinte
for(i=1;i<=n;i++)
sorteaza(i);
//sortam cuvintele
quick(1,n);
// caut sa elimin
strcpy(cautat,a[1]);
// strcpy(a[1],'sos');
for(i=2;i<=n;)
{
ok=1;
while((strcmp(cautat,a[i])==0)&&(i<=n))
{
//strcpy(a[i],);
i++;
ok=0;
}
if(ok==1)
contor++;
if(i!=n)
{
strcpy(cautat,a[i++]);
//strcpy(a[i-1],0);
}
else
{
contor++;
i++;
}
}
fprintf(g,"%d\n",contor);
fclose(f); fclose(g);
return 0;
}