POJ 1318

来源:互联网 发布:java mvc框架下载架包 编辑:程序博客网 时间:2024/05/17 04:56

poj1318

#include<iostream>#include<fstream>#include<cstdlib>using namespace std;//#define DEBUGstruct word{ char str[8]; char id[8]; int len;};int cmp(const void *a, const void *b)/* 升序排列 */{return *(char *)a - *(char *)b;}int strcmp(const void *a, const void *b)/* 升序排列 */{struct word aa = *(struct word*)a; struct word bb = *(struct word*)b;return strcmp(aa.str, bb.str);}static struct word dict[100];/* void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)) */int main(){#ifdef DEBUGfstream cin("G:\\book\\algorithms\\acm\\Debug\\dat.txt");#endifint n = 0;char tmp[8];while (true){cin >> tmp;if (!strcmp(tmp, "XXXXXX"))break;int len;dict[n].len = len = strlen(tmp);strcpy(dict[n].str, tmp);qsort(tmp, len, sizeof(tmp[0]), cmp);strcpy(dict[n].id, tmp);        n++;}qsort(dict, n, sizeof(dict[0]), strcmp);while (true){cin >> tmp;if (!strcmp(tmp, "XXXXXX"))break;int len = strlen(tmp);int find = 0;qsort(tmp, len, sizeof(tmp[0]), cmp);        for(int i = 0; i < n; i++){if (!strcmp(tmp, dict[i].id)){printf("%s\n",dict[i].str);find = 1;}}if (find == 0)printf("NOT A VALID WORD\n");printf("******\n");}return 0;}

该题和编程珠玑上的有道题很相似。 给出一个字典,字典中的单词唯一,一个单词, 找到这个单词在字典中的所有变位词。

变位词是指两个单词的字母相同,组合顺序不同。比如part , trap就互为变位词。解题关键:变位词有相同的特征码。

原创粉丝点击