题目描写叙述 Description

在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在不论什么时候一个骑士都能依照骑士的走法(它能够走到和它横坐标相差为1。纵坐标相差为2或者横坐标相差为2。纵坐标相差为1的格子)移动到空位上。

给定一个初始的棋盘,如何才干经过移动变成例如以下目标棋盘:

为了体现出骑士精神。他们必须以最少的步数完毕任务。

输入描写叙述 Input Description

第一行有一个正整数T(T<=10)。表示一共同拥有N组数据。接下来有T个5×5的矩阵,0表示白色骑士。1表示黑色骑士。*表示空位。

两组数据之间没有空行。

输出描写叙述 Output Description

对于每组数据都输出一行。

假设能在15步以内(包含15步)到达目标状态,则输出步数。否则输出-1。

例子输入 Sample Input
2
10110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100
例子输出 Sample Output

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 骑士精神题解的更多相关文章

  1. BZOJ1085:[SCOI2005]骑士精神——题解+IDA*粗略讲解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1085 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空 ...

  2. codevs2449 骑士精神

    题目描述 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标 ...

  3. IDA*算法——骑士精神

    例题 骑士精神 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者 ...

  4. BZOJ1085 luogu2324骑士精神题解

    没有什么特别好的办法,只好用搜索去做 因为一次移动最多归位一个骑士 所以可以想到用IDA*,为了简化状态 我们用k,x,y,sum来表示移动了k步,空格在x,y,还用sum个没有归位的情况 然后枚举转 ...

  5. 【日常学习】codevs1287 矩阵乘法题解

    转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看. 先上题目 题目描写叙述 Description 小明近期在为线性代数而头疼,线性代数确实非 ...

  6. 埃及分数&&The Rotation Game&&骑士精神——IDA*

    IDA*:非常好用的搜索,可以解决很多深度浅,但是规模大的搜索问题. 估价函数设计思路:观察一步最多能向答案靠近多少. 埃及分数 题目大意: 给出一个分数,由分子a 和分母b 构成,现在要你分解成一系 ...

  7. 【洛谷2324】[SCOI2005]骑士精神 IDA*

    [SCOI2005]骑士精神 描述 在一个\(5×5\)的棋盘上有\(12\)个白色的骑士和\(12\)个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为 ...

  8. 『骑士精神 IDA*』

    骑士精神(SCOI2005) Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵 ...

  9. 1085. [SCOI2005]骑士精神【IDA※】

    Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2 ...

随机推荐

  1. JavaScript 中对变量和函数声明的“提前(hoist)”

    hoist vt.升起,提起; vi.被举起或抬高; n.起重机,升降机; 升起; <俚>推,托,举; 这篇文章不讲英语,但是对于某些英语单词找不到很好的翻译,一上来就列出“hoist”这 ...

  2. asp.net应用发布到IIS无法链接到oracle数据库

    遇到这个问题纠结了好久,试了好多的方法,其中我的问题是,先安装了.net frameword4然后又安装的IIS. 正确方式应该是先安装IIS 然后安装.net framework;且应用程序池没有启 ...

  3. flask中使用xlsxwriter导出excel文件

    最近需要使用flask导出xlsxwriter生成的excel文件,在文件比较小的情况下,可以直接导出. 首先,这里使用了StringIO,导出使用的模块 import xlsxwriter impo ...

  4. JavaScript 面试中常见算法问题详解

    1.阐述下 JavaScript 中的变量提升 所谓提升,顾名思义即是 JavaScript 会将所有的声明提升到当前作用域的顶部.这也就意味着我们可以在某个变量声明前就使用该变量,不过虽然 Java ...

  5. C#中简单的this与get的用法(string,decimal)

    代码 namespace First{publicpartialclass Form1 : Form{public Form1(){InitializeComponent();} privatevoi ...

  6. [转载] Linux内存管理之mmap详解

    转载自http://blog.chinaunix.net/uid-26669729-id-3077015.html 一. mmap系统调用 1. mmap系统调用 mmap将一个文件或者其它对象映射进 ...

  7. ANDROID基础ACTIVITY篇之Activity的生命周期(一)

    首先我们先来看一下官方的Android的生命周期图: 根据这个流程图我们可以看到Activity的生命周期一共有7个方法,那么接下来我们就来聊聊这些方法执行过程. 首先在两个Activity(Main ...

  8. 用CRT查找内存泄漏

    引用原文地址 : https://msdn.microsoft.com/en-us/library/x98tx3cf.aspx 1. 在program中严格按下面顺序include #define _ ...

  9. 从零一起学Spring Boot之LayIM项目长成记(五)websocket

    前言 距离上一篇已经比较久的时间了,项目也是开了个头.并且,由于网上的关于Spring Boot的websocket讲解也比较多.于是我采用了另外的一个通讯框架 t-io 来实现LayIM中的通讯功能 ...

  10. PHP Xdebug安装及配置

    1.首先在官方网站下载dll文件; Xdebug官方网站 2.将php_xdebug.dll文件放入php/ext文件夹下; 3.编辑php.ini,在文件最后加入如下代码: ; Xdebug zen ...