`
hellobin
  • 浏览: 65488 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

UVA 642 - Word Amalgamation

    博客分类:
  • UVA
 
阅读更多

 

In millions of newspapers across the United States there is a word game calledJumble. 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 containingXXXXXX, which signals the end of the dictionary;
3.
one or more scrambled `words' that you must unscramble, each on a line by itself; and
4.
another line containingXXXXXX, 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 sentinelXXXXXXcontains 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
******

 

 

 

#define RUN
#ifdef RUN

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int n;	// n为单词的总数

// word数组的每一行都存放着词典中的一个单词
char word[2000][10], sorted[2000][10];


/*
基本思想:
借组qsort函数,先把在词典中所有的单词排序,
再对每一个单词进行字母排序,
把结果放在sorted[]数组中
对于新输入需要判断的单词,直接和sorted数组里面的各个单词比较即可
*/

// 字符比较函数
int cmp_char(const void* _a, const void* _b) {
  char* a = (char*)_a;
  char* b = (char*)_b;
  return *a - *b;
}

// 字符串比较函数
int cmp_string(const void* _a, const void* _b) {
  char* a = (char*)_a;
  char* b = (char*)_b;
  return strcmp(a, b);
}


int main() {

#ifndef ONLINE_JUDGE
	freopen("642.in", "r", stdin);
	freopen("642.out", "w", stdout); 
#endif


  n = 0;		// n为单词总数
  for(;;) {
    scanf("%s", word[n]);	// 记录每一个定义的单词
    if(word[n][0] == 'X') break;	// 结束记录
    n++;
  }

  // 此步可省略
  qsort(word, n, sizeof(word[0]), cmp_string);
  
  // 对每一个单词进行字母层面的排序,使每一个单词都是alphabetacal
  for(int i = 0; i < n; i++) {
    strcpy(sorted[i], word[i]);
    qsort(sorted[i], strlen(sorted[i]), sizeof(char), cmp_char);
  }

  char s[10];
  while(scanf("%s", s)!=EOF && s[0]!='X') {
	// 对读入的每一个乱序单词进行排序
    qsort(s, strlen(s), sizeof(char), cmp_char);
    int found = 0;
	// 与词典库中的每一个已定义的单词进行比较
    for(int i = 0; i < n; i++){
      if(strcmp(sorted[i], s) == 0) {
        found = 1;
        printf("%s\n", word[i]);
      }
	}
    if(!found) printf("NOT A VALID WORD\n");
    printf("******\n");
  }
  return 0;
}

#endif



分享到:
评论

相关推荐

    sqlite-amalgamation-201510071324.zip

    这个压缩包"sqlite-amalgamation-201510071324.zip"就是这种合并后的源代码版本。 在"sqlite-amalgamation-201510071324.zip"中,包含了以下几个关键文件: 1. sqlite3.c:这是SQLite的主要源代码文件,包含了所有...

    sqlite-amalgamation

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。...

    sqlite-amalgamation-3.7.3.tar.rar

    在解压"sqlite-amalgamation-3.7.3.tar.rar"后,我们会得到"sqlite-amalgamation-3.7.3.tar.gz"。这是一个双重压缩的文件,首先需要使用tar工具解压,然后用gzip进行解压缩。解压过程通常如下: 1. 使用tar命令解压...

    sqlite-amalgamation-3070701.rar_sqlite-amalgamation

    这个压缩包"sqlite-amalgamation-3070701.rar_sqlite-amalgamation"包含了SQLite 3.7.7.1版本的完整源码。 SQLite的核心特性包括: 1. **零配置**:SQLite无需服务器进程,可以直接在本地文件系统上运行,无需额外...

    sqlite-amalgamation-3140200

    "sqlite-amalgamation-3140200" 是SQLite的一个特定版本,具体为3.14.2。这个版本的SQLite源码包含了实现整个数据库引擎的所有必要文件,非常适合在各种项目中集成和定制。 SQLite的源码组织方式非常特别,它采用...

    sqlite-amalgamation-3.8.8.tar.tgz

    "sqlite-amalgamation-3.8.8.tar.tgz" 是SQLite的一个特定版本——3.8.8的源码包,采用tar.tgz格式进行压缩,适合在Unix/Linux或类Unix系统中进行解压和编译。 这个版本的SQLite包含了完整的源代码和文档,使得...

    sqlite-amalgamation-3.6.11.tar.gz

    "sqlite-amalgamation-3.6.11.tar.gz" 是SQLite的一个特定版本,3.6.11,打包成的tar.gz格式压缩文件。在Linux或类Unix系统中,tar.gz文件通常用于存储和传输多个文件和目录,因为它能有效地压缩数据,减少下载和...

    sqlite-amalgamation-3_7_2.zip

    "sqlite-amalgamation-3_7_2.zip" 是SQLite的一个特定版本,即3.7.2版本的源代码集合。在压缩包中,包含了以下关键文件: 1. **sqlite3.c**:这是SQLite的主要源代码文件,实现了数据库引擎的所有功能,包括SQL解析...

    sqlite-amalgamation-3.7.3.tar

    在“sqlite-amalgamation-3.7.3.tar”中,你将找到一个包含所有必要源代码的集合,这使得在各种项目中集成SQLite变得非常简单,无需处理多个库文件。 2. **跨平台**:SQLite设计为跨平台,支持包括Linux在内的多种...

    sqlite-amalgamation-3300100.zip

    sqlite最新源码压缩包 官网下载太慢了,上传一个备份 ...sqlite-amalgamation-3300100.zip (2.24 MiB) C source code as an amalgamation, version 3.30.1. (sha1: ff9b4e140fe0764bc7bc802facf5ac164443f517)

    sqlite-amalgamation-3370000.zip

    "sqlite-amalgamation-3370000.zip" 是SQLite数据库引擎的3.37版本的源码集合,这个压缩包包含了一系列的文件,用于编译和构建SQLite库。 SQLite 3.37版本的更新可能引入了新的特性和性能优化。自SQLite诞生以来,...

    sqlite-amalgamation-3310100.zip

    "sqlite-amalgamation-3310100.zip"是一个包含SQLite源代码的压缩包,版本号为3310100,这个版本可能包含了针对该数据库系统的性能优化和新功能。 在该压缩包中,最重要的两个文件是`sqlite3.h`和`sqlite3.c`。`...

    sqlite-amalgamation-3081001.zip

    "sqlite-amalgamation-3081001.zip" 文件是一个包含SQLite 3.8.10.1版本源码的压缩包,发布于2015年5月9日。这个版本是SQLite的一个集成版本,"amalgamation"一词在SQLite中特指将所有源代码合并成少数几个大文件,...

    sqlite-amalgamation-3_7_0.zip

    "sqlite-amalgamation-3_7_0.zip"是一个包含SQLite源代码的压缩包,版本号为3.7.0。这个版本发布于2011年,是SQLite历史上的一个重要里程碑。 在该压缩包中,包含了以下关键文件: 1. **sqlite3.c**:这是SQLite的...

    sqlite-amalgamation-3240000.zip

    sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中。 sqlite动态库非常小,最新的3.8.11版本也只有500k左右。sqlite虽然小,但功能并不弱,它...

    sqlite-amalgamation-3350300.zip

    标题中的"sqlite-amalgamation-3350300.zip"指的是SQLite数据库的一个特定版本,即3.35.3的聚合版本。"amalgamation"这个词在SQLite中的意思是将所有源代码合并到一个单一的文件或一组紧密相关的文件中,方便用户...

    sqlite-amalgamation-3_7_0_1

    "sqlite-amalgamation-3_7_0_1" 是SQLite的一个特定版本,表示的是3.7.0.1版本的源代码合集。 在这一版本中,主要的文件包括: 1. `sqlite3.c`:这是SQLite的核心源代码,包含了数据库引擎的所有功能。它实现了SQL...

    sqlite-amalgamation-3.6.13.tar.gz

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。...

    sqlite-amalgamation-3.7.6.3.tar.gz

    标题中的"sqlite-amalgamation-3.7.6.3.tar.gz"是一个压缩包,包含了SQLite 3.7.6.3版本的所有源代码。这个压缩包使用了tar和gzip两种工具进行打包和压缩,".tar"用于归档多个文件和目录,而".gz"则是gzip的压缩格式...

    sqleet-v0.31.1-amalgamation.tar.gz

    《sqleet-v0.31.1-amalgamation.tar.gz:SQLite数据库加密技术解析》 SQLite,作为一种轻量级的嵌入式关系型数据库,因其体积小、无需服务器进程、支持多种操作系统等特性,在移动设备和小型应用中广泛应用。然而,...

Global site tag (gtag.js) - Google Analytics