在8X8的棋盘上分布着n个骑士,他们想约在某一个格中聚会。骑士每天可以像国际象棋中的马那样移动一次,可以从中间像8个方向移动(当然不能走出棋盘),请计算n个骑士的最早聚会地点和要走多少天。要求尽早聚会,且n个人走的总步数最少,先到聚会地点的骑士可以不再移动等待其他的骑士。

从键盘输入n(0<n<=64),然后一次输入n个骑士的初始位置xi,yi(0<=xi,yi<=7)。屏幕输出以空格分隔的三个数,分别为聚会点(x,y)以及走的天数。

提示:BFS。

#define M 8
#define N 8
#define DIR 8typedef struct Pointer {int x;int y;
};typedef struct Knight {Pointer* point;    //起始点bool visited[M][N];    //是否访问queue<Pointer*> kq; //第几天到达的位置
};//结果结构体
typedef struct Result {Pointer* point;int days;
};/*x行,y列* 下一步位移*/
int nextX[] = { -1, 1, -2, 2, -2, 2, -1, 1 };
int nextY[] = { -2, -2, -1, -1, 1, 1, 2, 2 };/*坐标是否合理*/
bool sure(int i, int j) {if (i >= 0 && i < M && j >= 0 && j < N)return true;elsereturn false;
}//寻找集合点和天数
Result* findGatherPoint(vector<Knight*> knights) {int days = 0;//记录骑士到达数量int matrix[M][N] = { 0 };if (knights.empty()) {return NULL;}//预处理for (int i = 0; i < knights.size(); ++i) {matrix[knights[i]->point->x][knights[i]->point->y] = 1;}while (1) {days++;for (int i = 0; i < knights.size(); ++i) {int len = knights[i]->kq.size();for (int j = 0; j < len; ++j) {Pointer* tmp = knights[i]->kq.front();knights[i]->kq.pop();/*BFS向8个方向走一步*/for (int k = 0; k < DIR; ++k) {int x = tmp->x + nextX[k];int y = tmp->y + nextY[k];if (sure(x, y) && !knights[i]->visited[x][y]) {knights[i]->visited[x][y] = true;Pointer* p = new Pointer();p->x = x;p->y = y;knights[i]->kq.push(p);matrix[x][y]++;if (matrix[x][y] == knights.size()) {Result* result = new Result();result->point = p;result->days = days;return result;}}}}}}
}

在8X8的棋盘上分布着n个骑士,他们想约在某一个格中聚会。骑士每天可以像国际象棋中的马那样移动一次,可以从中间像8个方向移动(当然不能走出棋盘),请计算n个骑士的最早聚会地点和要走多少天。要求尽早聚会相关推荐

  1. Java黑皮书课后题第8章:*8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的。重写该程序,通过检验是否每行、每列、每个小方盒中具有

    *8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的.重写该程序 题目 题目描述 程序清单8-4 破题 代码 题目 题目描述 *8.24 ...

  2. 题目描述: 某城市有一个火车站,铁轨铺设如图所示。 有n节车厢从A方向驶入车站,按进站顺序编号1~n。 现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站。 为了重组车厢,可以借助中转站C。

    题目描述: 某城市有一个火车站,铁轨铺设如图所示. 有n节车厢从A方向驶入车站,按进站顺序编号1-n. 现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站. 为了重组车厢,可以借助中转站C. C ...

  3. 小马智行最新RoboTaxi来了!彭军:对方向有着前所未有的笃定

    允中 发自 副驾寺 智能车参考 | 公众号 AI4Auto 盆友,这款车你可认识? 这是今日亮相的最新RoboTaxi,基于丰田 "赛那 SIENNA"Autono-MaaS(S- ...

  4. android开发中磁场传感器,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  5. 上面两点下面一个三角形_K线图中走出三角形收敛形态必有大波动?一招判断后期走势方向...

    三角形整理在股票市场.期货市场以及外汇等其他金融市场的技术分析图形中,三角形整理形态是比较常见的技术形态,可见掌握三角形整理形态是非常重要的.这一节课我们就来学习三角形整理形态,下图为经典的三角形整理 ...

  6. html中label文本垂直居中,如何在VB中实现label中的文字垂直方向居中?

    在Vb中如text和label控件是没有垂直居中功能的. 但是可以变通就是给文字加空行. 下面的是从百度贴吧上面引用来的: 但是他并没有说明要将text的mutiline属性设置为true,否则是不行 ...

  7. 2021全球电影行业市场规模及分布情况:全球电影市场规模约3282亿美元,同比6.21% [图]

    一.现状 2021全球戏剧家庭/移动娱乐市场规模约997亿美元,较2020年增涨23.85%.这一数字不包括付费电视订阅市场.由于影院重新开放,全球影院市场增长了81%. 2017-2021年全球戏剧 ...

  8. 十月下旬腾讯,网易游戏,百度盛大迅雷校园招聘笔试题集锦(10.25)

    十月下旬腾讯,网易游戏,百度最新校园招聘笔试题集锦 引言 笔试啊,笔试,面试啊,面试,找工作啊,找工作.此文十月百度,阿里巴巴,迅雷搜狗最新面试十一题已经整理了最新的面试题70道,本文依次整理腾讯,网 ...

  9. 迅雷近几年笔试题及其分析

    作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11533437. 声明:版权所有,转载请注明出处,谢谢 ...

  10. 十月下旬腾讯 网易游戏 百度迅雷校园招聘笔试题集锦 第271 330题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 十月下旬 ...

最新文章

  1. cic曲线是什么_贝塞尔曲线基本用法
  2. 比杠精网友更可怕的,是懂王同事
  3. va_list、va_start和va_end使用
  4. C++知识点40——运算符的重载概念与分数类实现(中)
  5. 通俗易懂详解Java代理及代码实战
  6. gd动态曲线 php_PHP GD库动态生成折线图的实例代码
  7. linux不登录用户就关机,Linux无法被远程登录;用户的关机, 重启,注销,新增用户,删除用户...
  8. 五大算法之二--动态规划
  9. PIN码 Adsense在线身份验证
  10. JavaScript就这么回事 (JS基础知识整理)
  11. python 生成嵌套字典
  12. 9.UNIX 环境高级编程--进程关系
  13. 红帽子linux 6.8 u盘安装,RHEL 6.8 安装指导手册
  14. 第二章:项目管理的主要作用
  15. 基于微信小程序 校园跑腿小程序毕业设计毕设开题报告参考功能
  16. 为什么-关于因果关系的新科学 | 导言
  17. Redis(设计与实现):28---事件之文件事件(AE_READABLE事件、AE_WRITABLE事件)
  18. linux对IO口控制remap,ioremap/remap_page_range [经典]Linux内核中ioremap映射的透彻理解...
  19. python函数进阶小结_python函数的进阶
  20. 戴尔游匣G15 系统蓝屏问题解决的方法

热门文章

  1. Cocoa与Cocoa Touch区别
  2. 德国计算机留学难度,德国留学,真的很难毕业吗?德国留学生的真实感受
  3. 为什么我们买了股票就不涨被套,股票割肉就飞了?
  4. java.net.SocketException: Unrecognized Windows Sockets error: 10106: create
  5. 来诈金花嘛?Python实现的那种
  6. XSS 扫描器成长记
  7. Geronimo入门与进阶
  8. Servlert项目部署到服务器,web初学之serverlet开发综述(一)
  9. html 按钮控制图片,html怎么设置图片按钮
  10. 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩 纹理映射技术 一