【日常学习】【IDA*】codevs2449 骑士精神题解
在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在不论什么时候一个骑士都能依照骑士的走法(它能够走到和它横坐标相差为1。纵坐标相差为2或者横坐标相差为2。纵坐标相差为1的格子)移动到空位上。
给定一个初始的棋盘,如何才干经过移动变成例如以下目标棋盘:
为了体现出骑士精神。他们必须以最少的步数完毕任务。
第一行有一个正整数T(T<=10)。表示一共同拥有N组数据。接下来有T个5×5的矩阵,0表示白色骑士。1表示黑色骑士。*表示空位。
两组数据之间没有空行。
对于每组数据都输出一行。
假设能在15步以内(包含15步)到达目标状态,则输出步数。否则输出-1。
2
10110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100
7
-1
图片不在这儿= =只是看代码就知道了
这是我第一次写IDA* 还是參考了黄学长代码 顺便被罗雨屏神犇好好的歧视了一下 一開始仅仅写了迭代加深搜索 仅仅过了两个点 加了启示式搜索之后过了 事实上这里的估价函数就是里奥神犇当时DFS的剪枝 所以里奥神犇当时写的就已经是IDA*了 ORZ里奥神犇
所谓启示式搜索,就是在搜索过程中加入一个估价函数,代表当前状态到目标状态预估所须要的步数。剪枝就是将不合法的情况去掉。但也能够不剪,优先向估价函数小的方向搜索,在这个方向我们得到正确解期望较大,能够节省时间。
应当注意的是,估价函数仅仅是一个估价。并非实际步数。
假设剪掉估价函数较大的情况,相当于是放弃了一些可能是答案的情况。
但这些情况是答案的可能性较小。
直接上代码吧,关于二维数组的传递。我还不是非常明确。希望大家看了代码帮帮忙
注意这里。二维数组的传递
对于函数的调用是这样写的:
if (ok(&a[0]))
{
flag=true;
}
return;
这个函数声明时,是这种:
bool ok(int (*a)[5])
当中a是一个二维数组。在函数中应用时,直接写a[x][y]就可以
这里a数组我们传递的是地址。由于里奥神犇说。假设传数组的话,数组大了非常可能爆栈。
可是详细为什么要这样写。我也不大明确
原本对于数组a的指针应当是【**a】,可是假设这样写,以下的引用就会各种报错。最后的解决方式就是上面这种。看来我还要慢慢学习啊。
假设有哪位同学懂得二维数组用作实參的传递,请务必告诉我。
——闲梦远,南国正清秋。千里江山寒色远,芦花深处泊孤舟。笛在月明楼。
【日常学习】【IDA*】codevs2449 骑士精神题解的更多相关文章
- BZOJ1085:[SCOI2005]骑士精神——题解+IDA*粗略讲解
http://www.lydsy.com/JudgeOnline/problem.php?id=1085 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空 ...
- codevs2449 骑士精神
题目描述 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标 ...
- IDA*算法——骑士精神
例题 骑士精神 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者 ...
- BZOJ1085 luogu2324骑士精神题解
没有什么特别好的办法,只好用搜索去做 因为一次移动最多归位一个骑士 所以可以想到用IDA*,为了简化状态 我们用k,x,y,sum来表示移动了k步,空格在x,y,还用sum个没有归位的情况 然后枚举转 ...
- 【日常学习】codevs1287 矩阵乘法题解
转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看. 先上题目 题目描写叙述 Description 小明近期在为线性代数而头疼,线性代数确实非 ...
- 埃及分数&&The Rotation Game&&骑士精神——IDA*
IDA*:非常好用的搜索,可以解决很多深度浅,但是规模大的搜索问题. 估价函数设计思路:观察一步最多能向答案靠近多少. 埃及分数 题目大意: 给出一个分数,由分子a 和分母b 构成,现在要你分解成一系 ...
- 【洛谷2324】[SCOI2005]骑士精神 IDA*
[SCOI2005]骑士精神 描述 在一个\(5×5\)的棋盘上有\(12\)个白色的骑士和\(12\)个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为 ...
- 『骑士精神 IDA*』
骑士精神(SCOI2005) Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵 ...
- 1085. [SCOI2005]骑士精神【IDA※】
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2 ...
随机推荐
- BOM对象
每一个frames都有自己的window对象,也就是每个frames都有自己的全局对象,它们之前是相互独立的,包括各自独立的本地对象,top.Object !== top.frames[0].Obje ...
- ⑥bootstrap表单使用基础案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ThinkPHP模版验证要注意的地方
Model页面 <?php class LoginModel extends Model { //protected $tableName = 'userinfo'; //表名和model不一致 ...
- javascript获取年月日
javascript获取年月日代码片段 function getNowDate() { var date = new Date(); var split = "-"; var ye ...
- 从事务角度粗窥架构的可扩展性和可维护性:内容整理自java web轻量级开发面试教程
大家多少了解过架构,也听说过使用架构后,代码和可维护性和重用性能大大提升.这里我们来通过一些关于事务的实例,来感性地体会下架构带来的在可维护性方面的便利.本文来是从 java web轻量级开发面试教程 ...
- Spring AOP高级——源码实现(3)AopProxy代理对象之JDK动态代理的创建过程
spring-aop-4.3.7.RELEASE 在<Spring AOP高级——源码实现(1)动态代理技术>中介绍了两种动态代理技术,当然在Spring AOP中代理对象的生成也是运用 ...
- PHP中MD5函数漏洞
题目描述 一个网页,不妨设URL为http://haha.com,打开之后是这样的 if (isset($_GET['a']) and isset($_GET['b'])) { if ($_GET[' ...
- 一个Win32API Trace Tool的设计与实现
用VC编程也有不短的时间了,对kernel32.advapi32.user32.gdi32等动态库里的API多数都已经很熟悉了.API是操作系统提供给应用程序的一组服务,很久以前就想要做个小工具,用来 ...
- Nuxt框架实践
前言 今天抽空过了遍nuxt文档,写了个实践demo,关于nuxt我已经断断续续看了好几遍了,自我感觉也算是入门了吧,从开发到上线心里都有底.后期打算在项目用起来的是nuxt框架,一些函数工具库,比如 ...
- Entity Framework——建模建库
1数据库初始化策略选择 三种初始化策略: 1)CreateDatabaseIfNotExists:默认的策略.如果数据库不存在,那么就创建数据库.但是如果数据库已存在,而且实体发生了变化,就会出现异常 ...