/*
限制步数 写迭代加深
注意剪枝:当先步数+不同的个数-1>当前限制的步数 就cut
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#define limit 15
using namespace std;
int T,ans=,falg;
int xx[]={,-,-,-,-,,,,};
int yy[]={,-,,-,,,-,,-};
int s[][],get[][];
int target[][];
char si;
void Get_target()
{
target[][]=;target[][]=;target[][]=;target[][]=;target[][]=;
target[][]=;target[][]=;target[][]=;target[][]=;target[][]=;
target[][]=;target[][]=;target[][]=;target[][]=;target[][]=;
target[][]=;target[][]=;target[][]=;target[][]=;target[][]=;
target[][]=;target[][]=;target[][]=;target[][]=;target[][]=;
}
int Judge()
{
int ret=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(s[i][j]!=target[i][j])
ret++;
return ret;
}
void Dfs(int now,int x,int y,int sum)
{
if(falg)return;
int c=Judge();
if(now==sum)
{
if(c==)
ans=sum,falg=;
return;
}
if(now-+c>sum)return;
for(int i=;i<=;i++)
{
int nx=x+xx[i];
int ny=y+yy[i];
if(nx>&&nx<=&&ny>&&ny<=)
{
swap(s[x][y],s[nx][ny]);
Dfs(now+,nx,ny,sum);
swap(s[x][y],s[nx][ny]);
}
}
}
int main()
{
scanf("%d",&T);
Get_target();
while(T--)
{
int x,y;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
cin>>si;
if(si=='*')x=i,y=j,get[i][j]=;
else get[i][j]=si-'';
}
for(int k=;k<=limit;k++)
{
falg=;ans=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
s[i][j]=get[i][j];
Dfs(,x,y,k);
if(ans==k)break;
}
if(ans<=)printf("%d\n",ans);
else printf("-1\n");
}
return ;
}

codevs 2449 骑士精神 (IDDfs)的更多相关文章

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

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

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

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

  3. [bzoj] 1085 骑士精神 || ID-DFS

    原题 找到最少的步数成为目标状态. IDDFS(限制层数的dfs)即可 #include<cstdio> #include<algorithm> using namespace ...

  4. 骑士精神 (codevs 2449)

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 分片传输——send和recv函数

    最近在写socket编程收发数据,对于如何发送和接收大量数据,一直在思考.send和recv一般缓存区大小为4K,但是如果你要传输的数据超过了这个标准该如何做呢. 我想到的就是如改写write和rea ...

  2. jQuery实现checkbox全选反选及删除等操作

    1.list.html 说明:用checkbox数组Check[]存放每一行的ID值 <div id="con"> <table width="100% ...

  3. shell脚本中的括号和实例

    1.单圆括号和双圆括号 “双圆括号”命令允许将高级的数学表达式放入比较中.格式如下: (( expression )) 除了 test命令(if-then [])使用的标准数学运算符外, 双圆括号还支 ...

  4. iOS开发——OC篇&特殊数据类型

    一些特殊的数据类型 id.nil.Nil.SEL ,IMP Objective-C中有一些很有趣的数据类型经常会被错误地理解.他们中的大多数都可以在/usr/include/objc/objc.h或者 ...

  5. 判断input checkbox选中状态

    $("#IsAdmin").is(':checked') 判断收否选中 返回true 或者false

  6. spring获取properties

    实际项目中,通常将一些可配置的定制信息放到属性文件中(如数据库连接信息,邮件发送配置信息等),便于统一配置管理.例中将需配置的属性信息放在属性文件/WEB-INF/configInfo.propert ...

  7. ImportError: No module named matlab

    这个matlab已经改名为pylab了,你可以运行: from pylab import *

  8. 深度学习“引擎”之争:GPU加速还是专属神经网络芯片?

    深度学习“引擎”之争:GPU加速还是专属神经网络芯片? 深度学习(Deep Learning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引 ...

  9. OSSEC

    [科普]入侵检测系统ossec配置文件详解 http://www.freebuf.com/articles/system/11862.html http://www.freebuf.com/autho ...

  10. poj Monthly Expense

    http://poj.org/problem?id=3273 #include<cstdio> #include<cstring> #include<cmath> ...