codevs 2449 骑士精神 (IDDfs)
/*
限制步数 写迭代加深
注意剪枝:当先步数+不同的个数-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)的更多相关文章
- Codevs 2449 骑士精神 2005年省队选拔赛四川
2449 骑士精神 2005年省队选拔赛四川 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **大师 Master** 题目描述 Description 在一个5×5的棋盘上有12 ...
- BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )
一开始写了个 BFS 然后就 T 了... 这道题是迭代加深搜索 + A* -------------------------------------------------------------- ...
- [bzoj] 1085 骑士精神 || ID-DFS
原题 找到最少的步数成为目标状态. IDDFS(限制层数的dfs)即可 #include<cstdio> #include<algorithm> using namespace ...
- 骑士精神 (codevs 2449)
题目描述 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标 ...
- BZOJ1085:[SCOI2005]骑士精神——题解+IDA*粗略讲解
http://www.lydsy.com/JudgeOnline/problem.php?id=1085 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空 ...
- IDA*算法——骑士精神
例题 骑士精神 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者 ...
- BZOJ1085: [SCOI2005]骑士精神 [迭代加深搜索 IDA*]
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1800 Solved: 984[Submit][Statu ...
- A*算法详解 BZOJ 1085骑士精神
转载1:A*算法入门 http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx 在看下面这篇文章之前,先介绍几个理论知识,有助于理解A*算 ...
- 【BZOJ】1085: [SCOI2005]骑士精神(A*启发式搜索)
http://www.lydsy.com/JudgeOnline/problem.php?id=1085 囧啊囧,看了题解后写了个程序,但是样例总过不了T+T,调试了不下于1个小时,肉眼对拍看了根本看 ...
随机推荐
- 百度上传插件WebUploader,angularjs指令封装
1.WebUploader特点 官网地址:http://fex.baidu.com/webuploader/ 1.1 分片.并发 分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上 ...
- Linux下Openfire相关安装和配置
记录下来,方便下次再用时从头查找资料 小京东ecshop中的通讯有用到openfire,Window下配置安装很简单,直接下载exe文件安装就行,而linux下要麻烦一点.安装后的配置下面会细说: 一 ...
- Yii2的相关学习记录,后台模板和gii(三)
前面已经可以正常登录,但我们需要体验下最常用的增删查改的操作.这里就需要gii,通过gii可以方便的生成表单.表格的框架,不需要我们再写重复的东西. gii访问地址:http://localhost/ ...
- java学用代码
/** *Java获取IP代码 */ import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.ev ...
- python二进制文件解析
struct.pack(): struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组).其函数原型 ...
- JDBC驱动汇总
Microsoft SQL Server (6.5, 7, 2000 and 2005) and Sybase (10, 11, 12). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- Tomcat 9.0安装配置
本文转自:http://blog.sina.com.cn/s/blog_15126e2170102w5o8.html 一.JDK的安装与配置 1.从官网下载jdk,注意是jdk不是jre.最好从官网下 ...
- RESTful API -备
网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...
- Web Service相关工具的配置
近期在学习Web Service Testing,使用到了soapUI这个工具,但是在学习之前,需要搭建Web Service环境,其中有关数据库的连接问题花费了我好多时间,主要还是自己对于很多配置不 ...
- 代码度量工具——SourceMonitor的学习和使用
http://www.cnblogs.com/bangerlee/archive/2011/09/18/2178172.html 引言 我们提倡编写功能单一.结构清晰.接口简单的函数,因为过于复杂的函 ...