Word Amalgamation
Description
Input
Output
Sample Input
tarp given score refund only trap work earn course pepper part XXXXXX resco nfudre aptr sett oresuc XXXXXX
Sample Output
score ****** refund ****** part tarp trap ****** NOT A VALID WORD ****** course ******
做这个题目的时候,注意两点就可以了:1.查找的时候,不要单个字符去比较,这样很容易出错,应该以字符窜为单位去逐一去做比较,有符合题意的就输出!
2,.有多个单词符合条件是要看清楚输出的顺序,所以在比较之间对字典的单词进行一次排序,这样比较轻松!!!
附一组数据:aabbcc
bbccaa
XXXXXX
aaaaaa
XXXXXX
输出应该是:NOT A VALID WORD
具体代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char dic[101][7],che[101][7];
int cmp(const void *l1,const void *l2)
{
return(strcmp((char*)l1,(char*)l2));
}
int cmp1(const void *l1,const void *l2)
{
return *(char*)l1-*(char*)l2;
}
void main()
{
int i,j,k1,k2;
for(i=0;;i++)
{
scanf("%s",dic[i]);
if(dic[i][0]=='X')
{k1=i;break;}
}
for(i=0;;i++)
{
scanf("%s",che[i]);
if(che[i][0]=='X')
{k2=i;break;}
}
qsort(dic,k1,sizeof(dic[0]),cmp);
for(i=0;i<k2;i++)
{
int flag=0,flag1=0,leni,lenj,k=0;
char che1[7]={'\0'};
leni=strlen(che[i]);
strcpy(che1,che[i]);
qsort(che1,leni,sizeof(che1[0]),cmp1);
for(j=0;j<k1;j++)
{
char dic1[7]={'\0'};
lenj=strlen(dic[j]);
if(leni!=lenj)continue;
strcpy(dic1,dic[j]);
qsort(dic1,lenj,sizeof(dic1[0]),cmp1);
if(strcmp(che1,dic1)==0)
{
printf("%s\n",dic[j]);
k++;
}
}
if(k==0)printf("NOT A VALID WORD\n");
printf("******\n");
}
}
虽然简单,但什么都要认真对待,不是吗?