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

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

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

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

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

一节课的商讨和观察以后,我和我的小伙伴达成一致意见,从斜着的方向起手,应该很容易完成,于是长达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. android自动更新软件版本

    根据网上的然后小改 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import j ...

  2. cocos2dx 的基本框架

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

  3. Android开发之关于ListView中adapter调用notifyDataSetChanged无效的原因

    1.数据源没有更新,调用notifyDataSetChanged无效. 2.数据源更新了,但是它指向新的引用,调用notifyDataSetChanged无效. 3.数据源更新了,但是adpter没有 ...

  4. Ubuntu 64位系统安装StarUML之最佳实践

    preview 相信很多使用Ubuntu的哥们在安装StarUML或者其他软件时都会遇到要求libgcrypt11的依赖.而遗憾的时,这个东西很多人根本找不到. 我将它分享到百度网盘,mark. 一. ...

  5. [LeetCode#267] Palindrome Permutation II

    Problem: Given a string s, return all the palindromic permutations (without duplicates) of it. Retur ...

  6. Java Web编程的主要组件技术——JSP

    参考书籍:<J2EE开源编程精要15讲> JSP(Java Server Page)页面由HTML代码和嵌入其中的Java代码组成. 简单的JSP页面如: <html> < ...

  7. [总结]FFMPEG视音频编解码零基础学习方法--转

    ffmpeg编解码学习   目录(?)[-] ffmpeg程序的使用ffmpegexeffplayexeffprobeexe 1 ffmpegexe 2 ffplayexe 3 ffprobeexe ...

  8. 30种oracle常见的等待事件说明

    1Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是: 当一个会话视图修改一个数据块,但这 ...

  9. Android开发 |常见的内存泄漏问题及解决办法

    在Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要 ...

  10. mssql的delete用用到被delete的表的别名

    +' delete m from '+@strDBName +'.dbo.m_device as m where not exists ' +' (select 1 from @tmpDevice w ...