填字游戏c# - algorthm搜索

时间:2016-05-10 11:37:08

标签: c# crossword

我想用这个条件在C#中编写一个填字游戏:

  1. 言语无法重复。
  2. 单词可以水平放置,但只能从左向右运行。
  3. 单词可以垂直放置,但只能从高到低运行。
  4. 水平字必须与一个或多个垂直字相交。
  5. 垂直单词必须与一个或多个水平单词相交。
  6. 每个单词必须用空格或网格边界分隔。
  7. 未给出字段大小。考虑到词表,算法应该找到最好的填字游戏输出,并且fieldize应该是最小的。我的问题是变量fieldsize。考虑算法的外观,让某人知道吗?

1 个答案:

答案 0 :(得分:-1)

这是一个非常广泛的问题,我认为在开始尝试编写解决方案之前,您需要花一些时间考虑设计。

您需要解决的一些可能的子问题:

  1. 您需要一些单词的数据存储,您是自己制作还是在线使用?
  2. 您需要某种方法来检查这些单词中的字母,以确保单词具有可用于跨越彼此的单词的常用字母
  3. 您需要测量单词的长度并确保单词不会相互重叠(除非它们应该交叉!)或适合屏幕。每次生成网格以确保其有效时,您都需要重新测试这些规则
  4. 您可以将网格存储为 n x n 数组,假设您不使用对角线,则需要将单词写入单行或列中。
  5. 为确保您的文字从左到右或从上到下,您必须确保起始字母索引始终小于结尾处的字母。
  6. 您可能还需要存储每行或每列的单词数,以确保网格中的单词间距均匀