“谁想出来的这么缺德的题目啊!!!!”一个声音在我心中回荡

这个题目很早就在课堂上公布了,我和我的小伙伴都惊呆了!

这是个毛?根本无从下手的感觉

总是觉得这个小游戏不是程序能给出答案的,因为我的第一印象总是我们给出一种规则,然后程序根据规则摆放单词,这种事情很不靠谱。。

加上老师给的例子也让人惊呆,那个能摆放的更密集一点么???!!!

一节课的商讨和观察以后,我和我的小伙伴达成一致意见,从斜着的方向起手,应该很容易完成,于是长达N星期的第四次作业总算有个能开始的理由了。。

思路:

选出wordlist中最短的几个单词,这个“几”可以是任意的,一般可以定为一个wordlist中20%的单词,这是个不错的数字

比如一个40个的wordlist,我选出其中的8个最短的作为横竖排列的目标

优先斜向排列的原因是我们发现如果斜向排列那么主对角线方向和次对角线方向的单词会互相不影响

这是个伟大的发现!

如果我们能将32个单词全部斜向排列好,那么横向和纵向的排列的剩下的8个单词只需要填补空隙就行了~

按着这个思路我们写下了如下程序

PS:这次作业我实在是不知道怎么写,于是交给我的大神队友来完成排列的算法,而我负责写检查的算法,就是给出一个单词检索它是否有重复或者存在。

给出一个单词矩阵

通过find算法找到答案

给出一个更大的矩阵

得到答案

这是我的工作,写出的find函数给大神用来做检测

#include <cstdio>
#include <cstring>
#include <cstdlib>
char st[][];
char s[];
int n,m,l,flag;
bool find()
{
int move[][];
move[][]=-;move[][]=-;
move[][]=;move[][]=-;
move[][]=-;move[][]=-;
move[][]=;move[][]=;
move[][]=-;move[][]=;
move[][]=-;move[][]=;
move[][]=;move[][]=;
move[][]=; move[][]=;
int fx,k,xx,yy;
bool mi;
int i,j;
for (i=;i<n;i++)
for (j=;j<m;j++)
{
if (st[i][j]!=s[])continue;
for (fx=;fx<=;fx++)
{
xx=i;yy=j;mi=false;
for (k=;k<l;k++)
{
xx+=move[fx][];
yy+=move[fx][];
if (xx==-||yy==-||xx==n||yy==m)
{mi=true;break;}
if (st[xx][yy]!=s[k]) {mi=true;break;}
}
if (!mi) return true;
}
}
return false;
}
int main()
{
int i,j,k,x,y,t;
memset(st,'\0',sizeof(st));
memset(s,'\0',sizeof(s));
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d%d",&n,&m);
for (i=;i<n;i++)
scanf("%s",st[i]);
scanf("%s",s);
l=strlen(s);
flag=find();
if (flag) printf("有\n");else printf("没有\n");
return ;
}

大神写的算法代码我就不放了。。

我们一开始先做了斜向的

单词列表

只含斜向的生成图

由此可以看到:单词排布比较紧密,但是周边出现的空白部分也比较多,尤其在右侧和下侧

而我们留下了8个单词正好可以用横竖的方式填补这个空白,达到最终的效果。

我只能说我的小伙伴真的很厉害,他天天说自己是坑,不声不响把所有工作都做好了。

他很踏实,很能干,就是感觉有点不是很勤快,我知道大神都这样~~瞎搞搞就把事情搞定了~~

第四次作业——WORDSEARCH小游戏的更多相关文章

  1. python作业-2048小游戏

    需了解的知识 Pygame中的各个模块及其功能: Pygame.init():初始化所有导入的模块 pygame.display: pygame.display.init()  -  初始化 disp ...

  2. 第九章 nginx基础之搭建小游戏

    一.nginx部署 1.epel源安装 [root@web01 ~]# yum install -y nginx 2.官方源安装 1.配置官方源[root@web02 ~]# vim /etc/yum ...

  3. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  4. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  5. Chrome自带恐龙小游戏的源码研究(四)

    在上一篇<Chrome自带恐龙小游戏的源码研究(三)>中实现了让游戏昼夜交替,这一篇主要研究如何绘制障碍物. 障碍物有两种:仙人掌和翼龙.仙人掌有大小两种类型,可以同时并列多个:翼龙按高. ...

  6. 12岁的少年教你用Python做小游戏

    首页 资讯 文章 频道 资源 小组 相亲 登录 注册       首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...

  7. 个人第四次作业Alpha2版本测试~顾毓

    个人第四次作业Alpha2版本测试 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/ 这个作业要 ...

  8. 个人第四次作业Alpha2版本测试

    个人第四次作业Alpha2版本测试 这个作业属于哪个课程 软件工程 这个作业要求在哪里 作业要求 团队名称 GP工作室 这个作业的目标 对其他小组的项目进行测试 测试人员 陈杰 学号 20173102 ...

  9. jQuery实践-网页版2048小游戏

    ▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...

随机推荐

  1. cocos2dx 的基本框架

    AppDelegate.h #ifndef _APP_DELEGATE_H_ #define _APP_DELEGATE_H_ #include "cocos2d.h" USING ...

  2. C/C++面试题(一)

    1.手写快速排序 void quick_sort(int s[], int l, int r) { if (l < r) { //Swap(s[l], s[(l + r) / 2]); //将中 ...

  3. HDU 1677

    Nested Dolls Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. UVa 11178 (简单练习) Morley's Theorem

    题意: Morley定理:任意三角形中,每个角的三等分线,相交出来的三个点构成一个正三角形. 不过这和题目关系不大,题目所求是正三角形的三个点的坐标,保留6位小数. 分析: 由于对称性,求出D点,EF ...

  5. hdu 4619 Warm up 2(并查集)

    借用题解上的话,就是乱搞题.. 题意理解错了,其实是坐标系画错了,人家个坐标系,我给当矩阵画,真好反了.对于题目描述和数据不符的问题,果断相信数据了(这是有前车之鉴的hdu 4612 Warm up, ...

  6. UVA 1660 Cable TV Network 电视网络(无向图,点连通度,最大流)

    题意:给一个无向图,求其点连通度?(注意输入问题) 思路: 如果只有1个点,那么输出“1”: 如果有0条边,那么输出“0”: 其他情况:用最大流解决.下面讲如何建图: 图的连通度问题是指:在图中删去部 ...

  7. Java [Leetcode 137]Single Number II

    题目描述: Given an array of integers, every element appears three times except for one. Find that single ...

  8. erl0004 - ets 安全遍历

    safe_fixtable(Tab, true|false) -> true        Types:              Tab = tid() | atom() 锁定set,bag和 ...

  9. 【转】No JVM could be found on your system解决方法

    原文网址:http://my.oschina.net/liusicong/blog/324964 在安装android studio时,报错: Error launching android Stud ...

  10. GitHub上README.md教程

    最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种编辑博客的语言 ...