UVa 642 Word Amalgamation (查字典&字符串排序)
2013-09-28 00:08
330 查看
642 - Word Amalgamation
Time limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=583
In millions of newspapers across the United States there is a word game called Jumble. The object of this game is to solve a riddle, but in order to find the letters that appear in the answer it is necessary
to unscramble four words. Your task is to write a program that can unscramble words.
Input
The input file contains four parts:1.a dictionary, which consists of at least one and at most 100 words, one per line;2.a line containing XXXXXX, which signals the end of the dictionary;3.one or more scrambled `words' that you must unscramble, each on a line by itself; and4.another line containing XXXXXX, which signals the end of the file.
All words, including both dictionary words and scrambled words, consist only of lowercase English letters and will be at least one and at most six characters long. (Note that the sentinel XXXXXX contains uppercaseX's.)
The dictionary is not necessarily in sorted order, but each word in the dictionary is unique.
Output
For each scrambled word in the input, output an alphabetical list of all dictionary words that can be formed by rearranging the letters in the scrambled word. Each word in this list must appear on a line by itself.If the list is empty (because no dictionary words can be formed), output the line ``NOT A VALID WORD" instead. In either case, output a line containing six asterisks to signal the end of the list.
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 ******
统统排序。
完整代码:
/*0.015s*/ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; char word[110][10], sorted[110][10], s[10]; char *pstr[110]; bool cmp_string(const char *a, const char *b) { return strcmp(a, b) < 0; } int main(void) { int n = 0; while (gets(word ), word [0] != 'X') { pstr = word ; ++n; } ///交换两个字符串数组?干脆交换指针吧。 sort(pstr, pstr + n, cmp_string); ///注意在排序之后,word的顺序并未改变,但sorted是字典序 for (int i = 0; i < n; i++) { strcpy(sorted[i], pstr[i]); sort(sorted[i], sorted[i] + strlen(sorted[i])); } while (gets(s), s[0] != 'X') { sort(s, s + strlen(s)); bool found = false; for (int i = 0; i < n; i++) if (strcmp(sorted[i], s) == 0) { found = true; puts(pstr[i]); } if (!found) puts("NOT A VALID WORD"); puts("******"); } return 0; }
相关文章推荐
- UVa 642 - Word Amalgamation
- UVA - 10905 Children's Game 字符串的排序
- HDU 1113 Word Amalgamation(字符串&&STL)
- UVa 400 Unix ls (字符串排序&规格化输出)
- ZOJ1181 Word Amalgamation 字符串 排序查找
- uva 10905 Children's Game 字符串结合排序
- UVa642 - Word Amalgamation
- UVa 642 - Word Amalgamation
- [UVALive3942] Remember the Word && 字符串
- ZOJ1181 Word Amalgamation 字符串 排序查找
- Uva 642 - Word Amalgamation sort qsort
- HDU1113 POJ1318 UVA642 ZOJ1181 UVALive5328 Word Amalgamation【MAP+排序+水题】
- (字符串的模式匹配4.7.8)UVA 10008 What's Cryptanalysis?(统计文本中某一个字符的出现的次数,需要从小到大排序&&同次数的按字段序排序)
- UVa 642 - Word Amalgamation
- hdu-----(1113)Word Amalgamation(字符串排序)
- UVA 642 - Word Amalgamation
- UVA Andy's First Dictionary(模拟+字符串排序)
- UVa 642 Word Amalgamation
- uva 10815 Andy's First Dictionary(字符串排序)
- 去掉重复字符串并排序 例如12342343454565678789->123456789