1.14 连连看游戏设计

题意:设计连连看游戏。

这道题目最关键的问题是,连连看游戏中的寻路问题,这个寻路和以往的最短路径稍微有点不一样,这里是要找一个转弯数目最少的路径。

使用BFS进行搜索,需要重新定义一下最短路径的概念,这里的路径长短不再按照实际距离来算,而是按照转弯的数目来算,转弯数目越少,则路径越短。

算法搜索的时候也是一步一步进行移动的,从初始点出发,首先标记所有不用转弯就能直接到达的方格弯数为0,继而从这些弯数为0的方格进行扩展,标记所有弯数为1……

如此反复下去,如果弯数为2还没有找到,则表明这并不是一次有效的连接。

由于这里已经限制了弯数是要小于3的,所以笔者认为可以换一个角度考虑。

1)起点和终点同时标记各自不用转弯就能到达的方格,设分别为集合A和B,如果A∩B不为空集,那么说明起点和终点可以用0个弯或者1个弯连接,公共元素是必经之路;

2)如果没有重合的方格,那么检查A和B中x坐标或者y坐标相等的方格,尝试将两者相连,如果中间没有遮挡的话,就算连接成功,不过检查所有的都找不到,那说明连接失败。这种检查也是有技巧可取的,A和B中的元素是十字分布的,A中的竖与B中的竖对应进行检查,横同理进行对应检查,另外如果是顺序存储的话,可以利用滑动查找。

1.15 构造数独

题意:构造一个数独,9×9盘面上的已知数字满足每一行、每一列、每一个粗线宫(共9个)内的数字均含1-9,不重复。

解法一是一种暴力搜索的方法,对于一个空方格,在可能的值里面随机选一个填入,然后在下一个空方格重复这个过程,如果某种局面导致不存在可能的值,则回溯,重新选取与之前不同的可能的值。可能的值如何得到,则要看数独矩阵已经完成的情况,如果是填第一个空格,那么1-9随便哪一个都是可以的,第二个空格只要与第一个不同即可……之后可能还要考虑行列和宫的约束,所以搜索量看起来不小。

解法二是一种不完全的方法,只能取到一个全部数独的子集,不过技巧倒是挺有意思的。

转载于:https://www.cnblogs.com/xcoder/archive/2012/10/25/2736052.html

编程之美 第1章 游戏之乐——游戏中碰到的题目(九)相关推荐

  1. 《编程之美》笔记之——24点游戏

    原著中给出了两种解法:穷举和分治.后来加上去除冗余括号等操作,自己写了四个实现代码,但完全还是用的原著中的算法思想.暂且把自己的实现过程记录下来. 自己的第一种代码实现,完全穷举,没有任何的优化.代码 ...

  2. 编程之美-第1章 游戏之乐

    1. 使CPU占有率画出正弦曲线 linux下的代码: #if 0 /** Q1.1*/ int get_tick_count(){struct timeval tv;gettimeofday(&am ...

  3. 【编程之美/读书笔记】Chapter 1 游戏之乐

    这里就不写每个问题的题目了,只是记录一下自己的总结和心得. 1.1 让CPU占用率听你指挥 这个题目我刚接触的想法是和多核多线程要扯上关系的,因为自己写个死循环只能跑到CPU 35%左右的占用率,但是 ...

  4. 编程之美-第3章 结构之法

    3.1. 字符串移位包含问题 方法1: 分别对字符串进行循环移1位,2位,3位-,来判断给定的字符串是否是其中一个字串. 复杂度是O(n^3) 方法2: 这也是一种利用空间换时间的方法. 代码如下, ...

  5. 编程之美读书笔记2.1—求二进制数中1的个数

    解法一: 可以举一个8位二进制的例子.对于二进制操纵,我们除以一个2,原来数字就会减少一个0(向右移一位).如果除的过程中有余,那么久表示当前位置有一个1. 以10100010为例: 第一次除以2时, ...

  6. 编程之美-02数字之魅-求二进制数中1的个数

    题目:求二进制数中 1 的个数 对于一个字节(8bit)的无符号整型变量,求其二进制表示中"1"的个数,要求算法的执行效率尽可能地高. 解法一:移位->判断->累计 解 ...

  7. 一篇文章搞定面试中的二叉树题目(java实现)

    转载:http://www.jianshu.com/p/0190985635eb 最近总结了一些数据结构和算法相关的题目,这是第一篇文章,关于二叉树的. 先上二叉树的数据结构: class TreeN ...

  8. 《Java并发编程之美》

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yAwEsYPZ-1661534116043)(img/\1625573175405.jpg)] [外链图片转存失败,源站 ...

  9. 编程之美 - 哪个题目最美?

    编辑部搞的活动, 请大家帮个忙,来投票吧,看看<编程之美>第1章"游戏之乐--游戏中碰到的题目"大家最喜欢哪个题目,或者大家认为哪个题目最有趣. 可以选择以下任何网址参 ...

  10. java 编程之美_《编程之美—微软技术面试心得》PDF 下载

    第1章 游戏之乐--游戏中碰到的题目 1.1 让CPU占用率曲线听你指挥 1.2 中国象棋将帅问题 1.3 一摞烙饼的排序 1.4 买书问题 1.5 快速找出故障机器 1.6 饮料供货 1.7 光影切 ...

最新文章

  1. oracle设置大表空间,Oracle怎样设置表空间数据文件大小
  2. mysql 获取游标索引_MYSQL视图 事务 游标 索引及其使用
  3. 什么是负边沿触发_晶闸管的导通条件是什么 晶闸管(可控硅)检测方法
  4. Python 调试:step into/step out/step over 的区别
  5. 使用火炬之光资源(转)
  6. 没用过这些 IDEA 插件?怪不得写代码头疼
  7. Swift-Tips之重复字符串
  8. 三目运算符_C语言知识点:运算符的优先级和结合性
  9. SpringBoot默认的错误处理机制
  10. python格式化读取文件_python文本读写与格式化
  11. socketmq 设置队列大小_LeetCode 622:设计循环队列 Design Circular Queue
  12. Allegro 导入ASC file的步骤
  13. SQL Server 环境搭建
  14. 高通android刷机工具,高通android7.0刷机工具使用介绍
  15. UCI数据库Heart Disease数据集下载
  16. 007-redis-trib.rb命令详解
  17. windows中postman中文版安装
  18. Python.translate(table).maketrans(‘str1‘,‘str2‘)字符串翻译
  19. Window纯净系统安装详细教程
  20. 同花顺_代码解析_技术指标_EJK

热门文章

  1. spring学习笔记整理--03(Spring的三种实例化Bean的方式)
  2. IE无法执行JavaScript解决办法
  3. C# 判断字符中是否包含中文
  4. 关于Ajax的一揽子工程(2)
  5. ubuntu 版安裝mysql8
  6. Android使用adb命令查看CPU信息
  7. Jmeter(五)录制功能
  8. IE6 CSS高度height:100% 无效解决方法总结
  9. 物理运动网站收藏 ╮(╯▽╰)╭
  10. springmvc结合json向后台传送数据(get、post)