pls help me.
Code: Select all
/* @JUDGE_ID: 13487FC 630 C++ */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int sort_fun(const void *a,const void*b)
{
return( strcmp((char *)a,(char *)b) );
}
void main()
{
char dic[1000][20];
char temp[1000][20];
char test[20], in[10];
int letter1[26];
int letter2[26];
int n, i, j, flag, a, b;
int N, I;
gets(in);
N = atoi(in);
for(I=0; I<N; I++)
{
for(i=0; i<26; i++)
{
letter1[i] = 0;
letter2[i] = 0;
}
gets(in);
gets(in);
n = atoi(in);
for(i=0; i<n; i++)
gets(dic[i]);
for(;;)
{
gets(test);
test[strlen(test)] = 0;
if(!strcmp(test, "END")) break;
for(i=0; i<26; i++)
letter1[i] = 0;
for(i=0; i<strlen(test); i++)
{
letter1[test[i]-'a']++;
}
b = 0;
printf("Anagrams for: %sn", test);
for(i=0; i<n; i++)
{
flag = 1;
if(strlen(test)==strlen(dic[i]))
{
for(j=0; j<strlen(dic[i]); j++)
{
letter2[dic[i][j]-'a']++;
}
for(j=0; j<26; j++)
{
if(letter1[j]!=letter2[j])
{
flag = 0;
break;
}
}
if(flag)
{
strcpy(temp[b++], dic[i]);
}
for(j=0; j<26; j++)
letter2[j] = 0;
}
}
if(b)
{
qsort((void *)temp, b, sizeof(temp[0]), sort_fun);
for(a=0; a<b; a++)
printf("%3d) %sn", a+1, temp[a]);
}
else
{
printf("No anagrams for: %sn", test);
}
}
printf("n");
}
}
/* @END_OF_SOURCE_CODE */