64,663
社区成员
发帖
与我相关
我的任务
分享
#include "stdio.h"
int c[1000];
int he[100],ji[100]; /*声明和数组,积数组*/
int tj[100],px[100]; /* 声明统计数组,排序大小数组 */
int *cp[100]; /* 为每个单词分配空间 */
int *ew[100][100]; /* 声明一个二维数组 */
void main()
{
int a=0,b=0,d=0,e=0,i=0,j=0,*shan;
for(i=0;i<100;i++) ji[i]=1;
i=0;
for(i=0;(c[i]=getchar())!='\n';i++);
while(j<i)
{
if(c[j] != ' '&&c[j]!=0)
{
cp[a] = &c[j];
while(c[j] != ' '&&c[j]!=0)
{
he[a] += c[j];
ji[a] *= c[j];
j++;
}
a++;
}
j++;
} /* 给每个单词区分开来 */
printf("现在执行找变形单词,a是%d\n",a);
j=0;
for(i=0;i<a;i++)
{
for(b=i+1;b<a;b++)
{
if(he[i]==he[b] && he[i]!=0 && ji[i]==ji[b] &&cp[b]!=0)
{
j=1;
ew[d][0] = cp[i];
ew[d][++e] = cp[b];
cp[b]=0;
}
}
if(1==j)
{
d++;
j=0;
}
e=0;
} /* 匹配出所有的变形单词 */
for(i=0;i<d;i++)
{
for(a=0;*(ew[i][0]+a)!=' ' && ew[i][0]+a!=0;a++)
tj[i]++;
}
for(i=0;i<d;i++)
{
for(j=0,a=0;j<d;j++)
{
if(a<tj[j])
{
px[i]=j;
a=tj[j];
shan=&tj[j];
}
}
*shan=0;
} /* 根据单词包含的字母多少排序 */
for(i=0;i<d;i++)
{
while(*ew[px[i]][0]!=' '&&ew[px[i]][0]!=0)
{
printf("%c",*ew[px[i]][0]);
ew[px[i]][0]++;
}
printf("\n");
}
}
sort + hash_table 就可以。