题目

编写一个程序求解字谜游戏问题。

思路

借鉴前辈的思路

第一种:对单词表中的每个单词,我们检查每一个有序三元组(行,列,方向),验证是否有单词存在。但坏处是这将导致大量嵌套的for循环。

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

实现

代码:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>char puzzle[4][4] = {{'t','h','i','s'},{'w','a','t','s'},{'o','a','h','g'},{'f','g','g','t'}
};char *dict[4] = {"this","two","fat","that"};int wordExist(int x, int y, int dir, int strlen, char *word, int (*position)[2]);int main(void)
{char word[5];int position[4][2];int x, y, dir, strlen;for(x=0;x<4;x++){for(y=0;y<4;y++){for(dir=0;dir<8;dir++){for(strlen=2;strlen<5;strlen++){// 坐标 x y// 方向 dir// 单词长度从2开始if(wordExist(x, y, dir, strlen, word, position) == 1){printf("word: %s\n",word);break;}}}}}return 0;
}int wordExist(int x, int y, int dir, int strlen, char *word, int position[][2])
{char sword[5];int i = 0, j;while(i < strlen){position[i][0] = x;position[i][1] = y;sword[i++] = puzzle[x][y];sword[i] = '\0';for(j=0;j<4;j++){if(strcmp(sword,dict[j]) == 0){strcpy(word,dict[j]);return 1;}}switch (dir){case 0:        //从左到右y++;break;case 1:        //从右到左y--;break;case 2:        //从上到下x++;break;case 3:        //从下到上x--;break;case 4:        //从左上到右下x++;y++;break;case 5:        //从右下到左上x--;y--;break;case 6:        //从左下到右上x--;y++;break;case 7:        //从右上到左下x++;y--;break;default:puts("Direction error.");return 0;}if(x < 0 || y < 0)return 0;}return 0;
}

结果:

原文地址:http://www.cnblogs.com/mingc/p/5861745.html

对其代码有做过一些优化,降低循环次数。

编写一个程序求解字谜游戏问题相关推荐

  1. Java黑皮书课后题第8章:*8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1。让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了

    *8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1.让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了 题目 题目描述与运行示例 破题 代码 题目 题 ...

  2. Java黑皮书课后题第7章:*7.29(游戏:挑选四张牌)编写一个程序,从一副52张牌中选出4张,然后计算它们的和。Ace King Quee Jack分别表示1、13、12和11,显示得到和24的次

    *7.29(游戏:挑选四张牌)编写一个程序,从一副52张牌中选出4张,然后计算它们的和.Ace King Quee Jack分别表示1.13.12和11,显示得到和为24的选牌次数 题目 题目描述 破 ...

  3. 几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。本次上机要求编写一个简化的创建游戏角色的程序。

    一:题目分析 1.功能描述 几乎所有的RPG游戏(一种源自<龙与地下城>的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色.本次上机要求编写一个简化的创建游戏角色的程序. 2.游戏 ...

  4. 编写一个能求解各种柱体表面积和体积的程序

    编写一个能求解各种柱体表面积和体积的程序.这个程序由如下几个类和接口构成,他们的UML图如下所示: //MainClass.java package 实验2_1; import java.util.S ...

  5. RPG角色生成器 1.功能描述 几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。要求编写一个简化的创建游戏角色的程序。 2.游戏角色应

    RPG角色生成器 1.功能描述 几乎所有的RPG游戏(一种源自<龙与地下城>的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色.本次上机要求编写一个简化的创建游戏角色的程序. 2. ...

  6. 颠倒整数的C语言程序,帮忙解决c语言题目1.编写一个程序,用户输入一个小于5位的正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果。2.编...

    共回答了15个问题采纳率:93.3% 1.编写一个程序,用户输入一个小于5位的正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果. #include void main() { int num,t ...

  7. unity编写一个简单的小游戏

    unity编写一个简单的小游戏 简易fly bird的制作 关于flybird 场景的搭建和素材的导入 使用素材搭建game和scene 制作柱体 bird的script column的sprite ...

  8. 编写一个程序,实现将c语言源程序中的注释全部删除

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 6.编写一个程序,实现将c语言源程序中的注释全部删除 #include<stdl ...

  9. python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...

    导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...

  10. java 输入 方程,用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 java...

    题目: 用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a.b及c从命令行做参数输入 java 答案参考: 以下程序在jdk5.0测试通过 import java.util.Sca ...

最新文章

  1. css:中文词不断开,整体换行
  2. python----四种内置数据结构(dict、list、tuple、set)
  3. ubuntu安装百度网盘
  4. 143. Reorder List 重排链表
  5. 中石油训练赛 - 小说(最短路+二分)
  6. 苏杰专访:产品创新好方向=几十年不变的需求+硬科技赋能
  7. Net开发的部分知名网站案例
  8. Java 蓝桥杯 时间转换
  9. ibatis 模糊查询 mysql_Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
  10. an7062个引脚工作电压_马兰士PM711AV功放电路原理分析
  11. 关机时长时间停留在”正在保存设置“的解决办法
  12. python作用域链_Python 中的作用域准则
  13. feign multipartfile 多文件上传_Spring Cloud Alibaba 实战(六) - 声明式HTTP客户端-Feign
  14. 均值、均方值、方差、均方差和协方差概念及其物理意义
  15. 每日必读DZone Spring:Spring @Transactional 是如何真正工作的?
  16. 改变linux字体的大小,如何更改字体并调整其大小?
  17. 用pe修改计算机ip地址,实现WinPE上网功能修改IP及DNS方法
  18. sigmoid和softmax区别
  19. 一文弄懂JVM内存结构,垃圾回收器和垃圾回收算法
  20. 简述因特网标准制定的几个阶段?

热门文章

  1. 游戏策划:为什么我的儿子不沉迷游戏?
  2. 华为 MATE7 调试 LOCAT 日志不输出问题
  3. FreeMarker常见指令的简单介绍—快速入门(二)
  4. 贵州等保测评机构工程师(DJCP)目录-贵州等级保护测评机构工程师名单
  5. 关于太阳(卫星)天顶角,太阳高度角,太阳方位角
  6. java浏览器插件开发,如何获取Windows的IcedTea浏览器插件(OpenJDK浏览器Java插件)?
  7. 用户输入错误验证码错误三次后,锁定该用户3分钟 redis 使用案列
  8. qpushbutton设置居中_在右侧对齐图标并将文本居中放置在QPushButton中
  9. web前端中的文本居中效果
  10. mac换硬盘重装系统记录