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 ******
题目大意:输入几行单词作为字典,在XXXX后面输入要查找的单词,然后按顺序输出每个要查找的单词在字典中的各种顺序,每个单词后面都有星号。。。
解题思路:用一个数组来储存字典和要查找的单词,用另一个数组记录所有单词按ASC2码的排序,然后逐个枚举,找出相同的输出第一个数组中储存的单词
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 using namespace std; 5 char str[103][7]; 6 char in[7]; 7 int cmp(char a,char b) 8 { 9 10 return strcmp(a,b)>1; 11 } 12 bool cmp1(char a,char b) 13 { 14 return a<b; 15 } 16 bool is_same(int len,char *in,char *a) 17 { 18 char out[7]; 19 strcpy(out,a); 20 sort(out,out+len,cmp1); 21 if(strcmp(out,in)==0) 22 return true; 23 return false; 24 } 25 int main() 26 { 27 int i=0; 28 while(scanf("%s",str[i++])==1&&strcmp(str[i-1],"XXXXXX")){} 29 int n=i-1; 30 qsort(str,n,sizeof(str[0]),cmp); 31 while(1) 32 { 33 scanf("%s",in); 34 if(strcmp(in,"XXXXXX")==0) 35 break; 36 bool flag=false; 37 int len=strlen(in); 38 sort(in,in+len,cmp1); 39 for(int i=0;i<n;i++) 40 { 41 if(len==strlen(str[i])&&is_same(len,in,str[i])) 42 { 43 printf("%s\n",str[i]); 44 flag=true; 45 } 46 } 47 if(!flag) 48 printf("NOT A VALID WORD\n"); 49 printf("******\n"); 50 } 51 return 0; 52 }
POJ 1318 Word Amalgamation结题报告
原文:http://www.cnblogs.com/wangrunwen/p/4083155.html