• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?

无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?
描述:

直到找到一个中心,它周围的8个格子内的数字都比他小,寻找停止,打印路径。示例图如下。
(我想到的方法是把周围八个格子按顺时针添加进一个数组,数组排序找出最大的数字,然后strchr找出来它的数组地址,根据顺时针的规律就能知道这个数字在九宫格内的位置坐标,然后以它作为中心,递归。但是这个方法只是说出来就觉得太笨了,不知道前辈们有没有什么更好的想法?)

无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?


解决方案1:

可以预先列出八个方向的向量,这样就避免了写八段重复的代码。

如下所示:

const int dx[] = {0, 0, 1, -1, -1, -1, 1, 1};
const int dy[] = {1, -1, 0, 0, -1, 1, 1, -1};
// ...
for (int i = 0; i < 8; ++i) {
    int cur_x = x + dx[i];
    int cur_y = y + dy[i];
    // ...
}

解决方案2:

如果是逐个格子找的话,就是一个大二维数组最简单,周围八个格子就手写

[x-1,y-1]
[x,y-1]
[x+1,y-1]
...
[x+1,y+1]

挺优雅的啊。

如果数据集很大并且有规律,可以考虑优化方法,跳过一部分格子加速搜索。当然那就是另外的话题了

解决方案3:

用一个二维数组保存每个格子上的数 这样格子a[i][j]上面的数(如果上面有数,不是边界)就是a[i-1][j], 左上角的数是a[i-1][j-1] 右上角的数是a[i-1][j+1],下一步怎么走的话就是拿这周围的几个数中最大的那个跟自己比较, 直到没有比他小的,用数组记录路径。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?

相关文章

  • 2017-06-07 github连接超时教育网
  • 2017-06-07 javascript如何匹配出"字符!!!!!!!"类似字符串里的感叹号?
  • 2017-06-07 (golang)docker容器无法启动nosuchfileordirectorystatusCode=404
  • 2017-06-07 jboss做android的服务器
  • 2017-06-07 七牛delete文件跨域问题,七牛有什么地方能将我的域名加入解决这个问题吗
  • 2017-06-07 c#可以跨平台吗?现在让我进退两难
  • 2017-06-07 使用cURL想接口发送数据,出现等待相应的时间很长的现象,怎么解决。
  • 2017-06-07 openCV针对python的训练器怎么做?我要用python识别各种动物。
  • 2017-06-07 模拟登陆保存cookie怎么让登陆网站的时候带着这个cookie访问?
  • 2017-06-07 七牛云存储-视频上传,30M传不动。

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • python的tkinter的Text组件中文本编码的问题
    • 我们有上百G的资源,如何快速上传到七牛
    • assert问题
    • 程序面试算法问题
    • laravelORM$append属性的问题如图所示
    • 最近发现drools4有点问题!动态增加规则后会出事实对象不触发规则!想问一下大家还有这样的问题!
    • 请教高手~~~
    • jboss'findstr'不是内部或外部命令,也不是可运行的程序
    • web前端开发人员与后端开发人员是如何实现协作的?
    • 大舅去二舅家找三舅说四舅看到程序员赚钱比较多,我也想学了,大家说说什么语言前景比较好

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有