DataStructuresAndAlgorithm--字谜游戏

参考:http://tieba.baidu.com/p/2071585293

输入是由一些字母构成的一个二维数组以及一些单词组成。目标是要找出字谜中的单词,这些单词可能是水平、垂直或沿对角线上任何方向放置的。

作为例子,如下所示的字谜由单词 this 从第一行第一列的位置即(1,1)处开始并延伸至(1,4);单词 two 从(1,1)到(3,1);fat 从(4,1)到(2,3);而 that 则从(4,4) 到(1,1)。

现在至少有两种直观的算法来求解这个问题。对单词表中的每个单词,我们检查每一个有序三元组(行、列、方向)验证是否有单词存在。这需要大量嵌套的 for 循环,但他基本上是直观的算法。

也可以这样,对于每一个尚未月初谜板边缘的有序四元组(行、列、方向、字符数)我们可以测试是否所指的单词在单词表中。这也导致使用大量嵌套的 for 循环。如果在任意单词的最大字符数已知,那么该算法可能节省一些时间。

那么,如何判断一个字符串是否为一个单词。

第一个思路最简单,识别出个六级英语单词表,然后稍加整理做成数据库。
然后程序就通过查表来识别单词。

·第二个思路稍微复杂点,按照你的要求,识别率肯定超过100%,不过就是可能会出现一些不存在的词。
一般英文单词的构成都是前缀 + 本体 + 后缀。
而且排列都是辅音后加元音。
按照这种排列去识别英文单词。

·第三个思路是利用各大网站的查询系统,识别率可以达到99.99%,不过要求联网,会一些HTTP知识以及网络编程:
我举的例子用百度词典来做查询引擎(不过因为百度的识别率太高,会出现一些很奇特的问题,你可以试试用其他引擎,金山词霸,或者Google翻译。)。
具体步骤如下:
连接到http://dict.baidu.com/s?wd=%s&f=3&dt=explain
其中%s替换成我们的英文单词。
然后,检查返回的内容。
如果发现“词典中没有与您搜索的关键词匹配的内容”这个字符串,那么就说明这个单词不存在,否则就是存在的。

时间: 2024-10-27 07:29:50

DataStructuresAndAlgorithm--字谜游戏的相关文章

JAVA编程思想导论(猜字谜游戏1.0)

一. 引言 本章将借用一个简易的猜字谜游戏,向读者简单介绍JAVA面向对象的部分知识以及实现思路. 二. 面向对象思想导论 为了了解什么是面向对象,我们需要解决以下几点问题(如图2.1所示): 面向对象是什么? 面向对象的特征(或者说表现形式). 为什么要面向对象(它与面向过程的区别). 面向对象该怎么做? 众所周知,计算机的编程语言是始于对机器的模仿,即以代码的形式控制机器完成人们希望所能达到的任务或者效果,故而所有编程语言都提供了抽象机制. 而这种抽象机制实际上可以这么认为——人们所能够解决

JAVA封装思想导论(猜字谜游戏2.0)

一. 引言 本章将第一篇中的猜字谜游戏1.0进行升级,然后向读者简单介绍JAVA中封装思想的部分知识以及其实现思路. 二.封装思想导论 在面向对象的编程思想中提出了三大基本特征:封装.继承和多态.其中,封装是继承与多态的基础.如果不能很好的理解封装的含义,那么继承和多态的学习也无从谈起.所以,为了更好的理解封装思想,我们将解决以下几个问题(如图2.1): 封装是什么? 我们为什么需要封装? 封装的特点? 封装如何实现? 封装的思想,从起源来看,已经很久了.早在亚里士多德时期,他就有关于类型的著述

《数据结构算法分析C描述》引论:选择问题,字谜游戏问题

#include <stdio.h> #include <stdlib.h> // 第一题 // 找出N个数的第k个最大者 // 方法1:排序(冒泡),降序找出第k个值 // 方法2:选前k个点进行降序排序,后面的数进行比较, // 如果数比第k个数小则忽略, 复杂度低于方法1 #define TYPE int #define TESTBUBLESORT 1 #define TESTBLOCKCOMPARE 1 #define TESTWORDPUZZLE 1 int findk_

python 猜字谜游戏(随机数)

python   猜字谜游戏(随机数) import randomtimes = 3secret = random.randint(1,10)guess = 0print('-----------我爱吃鱼----------')temp = input("不妨猜一下我的心里的数字:")guess = int(temp)while (guess != secret)and (times > 0):    temp = input("猜错啦,请重新输入:")  

数据结构与算法 字谜游戏问题

八个方向搜索 // wordpuzzle.jswindow.onload = entry; var keyword = 'fuck'; var words = new Array(4); words[0]  = new Array('t', 'h', 'i', 'k'); words[1]  = new Array('w', 'a', 'c', 's'); words[2]  = new Array('o', 'u', 'h', 'j'); words[3]  = new Array('f',

Java实现猜字母游戏

package day06; import java.util.Scanner; public class HomeWork { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = "GuessingGame"; System.out.println(string+"欢迎尝试猜字谜游戏!满分500分,最低分为0分!");

C语言:编写猜数字游戏,猜一个数字,一直到猜中为止

#include<stdio.h> #include<stdlib.h> #include<time.h> int game() {   int num=0;  int ret=0;  srand((unsigned int)time(NULL));  ret=rand;  ret=ret%100;  while(1)  {   scanf("%d",&num);    if(num>ret)    {     printf("

越狱Season 1-Episode 2: Allen

Season 1, Episode 2: Allen [Previously, on Prison Break] previously: 以前(预先) 前情回顾 -Judge: I find it incumbent that you see the inside of a prison cell incumbent: 必须履行的:有义务的 我必须判你牢狱之刑 Mr. Scofield. Scofield先生 -Fernando: Why do you want to see Burrows s

UVA 489-- Hangman Judge--暴力串处理

 Hangman Judge  In ``Hangman Judge,'' you are to write a program that judges a series of Hangman games. For each game, the answer to the puzzle is given as well as the guesses. Rules are the same as the classic game of hangman, and are given as follo

UVA 489-- Hangman Judge(暴力串处理)

 Hangman Judge  In ``Hangman Judge,'' you are to write a program that judges a series of Hangman games. For each game, the answer to the puzzle is given as well as the guesses. Rules are the same as the classic game of hangman, and are given as follo