题目传送门

乍一看好像是搜索题,但搜索明显会超时。

此处采用IDA*的方法求解。

IDA*算法就是基于迭代加深的A*算法。

code:

/**************************************************************
Problem: 1085
User: yekehe
Language: C++
Result: Accepted
Time:656 ms
Memory:1292 kb
****************************************************************/ #include <cstdio>
#include <string>
#include <iostream>
using namespace std; void swap(int &x,int &y){int t=x;x=y;y=t;} const int f[][]={{,,,,},{,,,,},{,,,,},{,,,,},{,,,,}};//目标状态
const int dx[]={,,,,-,-,-,-},dy[]={,-,,-,,-,,-}; int T,a[][],sx,sy,A;
string s;
bool W; int check()
{
for(int i=;i<;i++)
for(int j=;j<;j++)if(a[i][j]!=f[i][j])return ;
return ;
}//判断是否达到目标状态 int AS(int g)
{
int h=;
for(int i=;i<;i++)
for(int j=;j<;j++)
if(a[i][j]!=f[i][j])h++;
return h+g<=A;
}//A*剪枝 void dfs(int x,int y,int tot)
{
if(tot>A)return ;
if(check()){
if(tot==A)W=true;
return ;
}
if(W)return ;
for(int i=;i<;i++){
int fx=x+dx[i],fy=y+dy[i];
if(fx< || fx>= || fy< || fy>=)continue;
swap(a[x][y],a[fx][fy]);
if(AS(tot))dfs(fx,fy,tot+);
swap(a[x][y],a[fx][fy]);
}
return ;
} int main()
{
scanf("%d\n",&T);
while(T--){
W=;
for(int i=;i<;i++){
cin>>s;
for(int j=;j<;j++){
if(s[j]!='*')a[i][j]=s[j]-''+;
else sx=i,sy=j,a[i][j]=;
}
}
for(A=;A<=;A++){dfs(sx,sy,);if(W){printf("%d\n",A);break;}}//迭代
if(!W)puts("-1");
}
return ;
}

BZOJ1085_骑士精神_KEY的更多相关文章

  1. BZOJ1085: [SCOI2005]骑士精神 [迭代加深搜索 IDA*]

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1800  Solved: 984[Submit][Statu ...

  2. A*算法详解 BZOJ 1085骑士精神

    转载1:A*算法入门 http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx 在看下面这篇文章之前,先介绍几个理论知识,有助于理解A*算 ...

  3. 【BZOJ】1085: [SCOI2005]骑士精神(A*启发式搜索)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1085 囧啊囧,看了题解后写了个程序,但是样例总过不了T+T,调试了不下于1个小时,肉眼对拍看了根本看 ...

  4. 【bzoj1085】[SCOI2005]骑士精神

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1757  Solved: 961[Submit][Statu ...

  5. 【BZOJ 1085】 [SCOI2005]骑士精神

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

  6. Codevs 2449 骑士精神 2005年省队选拔赛四川

    2449 骑士精神 2005年省队选拔赛四川 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **大师 Master** 题目描述 Description 在一个5×5的棋盘上有12 ...

  7. BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )

    一开始写了个 BFS 然后就 T 了... 这道题是迭代加深搜索 + A* -------------------------------------------------------------- ...

  8. [bzoj1805][SCOI2005]骑士精神 [启发式搜索]

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

  9. 【日常学习】【IDA*】codevs2449 骑士精神题解

    题目描写叙述 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在不论什么时候一个骑士都能依照骑士的走法(它能够走到和它横坐标相差为1.纵坐标相差为2或 ...

随机推荐

  1. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串

    这个Chrome扩展应用的名称叫JSON Viewer Awesome 1.0.6: 安装之后,在Chrome工具栏会出现一个紫色的小图标: 然后可以把任意Json字符串直接贴到Chrome界面里: ...

  2. php生成csv文件并提供下载及相关注意事项

    1.生成文件过程略,只要逗号分割就可以了 2.提供下载加上如下代码: header("Content-type: application/octet-stream"); heade ...

  3. 从0开始学CentOS7(2)---安装mariaDB、jdk1.8、redis

    继续前面的基础步骤~ 这个是centos7自带的数据库MariaDB,以前是mysql,到7以后,改为MariaDB... 1. MariaDB安装,没有往深处配置...懒得动了..参考:http:/ ...

  4. hdu-2879 hehe---积性函数

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2879 题目大意: he[n]为小于n且满足x^2 = x (mod n)的个数 hehe[n] =  ...

  5. 系统架构的定义(与系统)-architecture

    architecture⟨system⟩ fundamental concepts or properties of a system in its environment embodied in i ...

  6. Selenium应用代码(常见封装的方法一)

    常见封装的方法:输入.点击.判断元素是否存在.根据句柄切换窗口.根据title切换窗口.滚动窗口.截图 import java.awt.Rectangle;import java.awt.image. ...

  7. Dropbox的CEO在MIT的毕业演讲

    这是我今天看到的一个演讲,个人觉得和乔老大在斯坦佛的毕业演讲有异曲同工之妙,我也觉得对工科的我们很有启发意义,就此转载,希望与君共勉. 编者注:本篇文章基于Drew Houston 在 MIT 毕业典 ...

  8. web项目继承ServletContainerInitializer进行访问HttpServlet(WebServlet)

    java使用web项目不需要加web.xml 配置javax.servlet.ServletContainerInitializer 1.在src目录创建META-INF,META-INF目录下创建s ...

  9. 掺合模式(Mixin)

    Mixin是JavaScript中用的最普遍的模式,可以就任意一个对象的全部或部分属性拷贝到另一个对象上.从提供的接口来看,有的是对对象的操作,有的是对类的操作.对类的操作又称为掺元类(Mixin c ...

  10. 【AngularJS学习笔记】封装一些简单的控件(封装成Html标签)

    bootstrap有强大的指令系统,可以自定义一些属性,基本知识请移步:http://angularjs.cn/A00r  http://www.cnblogs.com/lvdabao/p/33916 ...