BZOJ1085_骑士精神_KEY
乍一看好像是搜索题,但搜索明显会超时。
此处采用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的更多相关文章
- 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个小时,肉眼对拍看了根本看 ...
- 【bzoj1085】[SCOI2005]骑士精神
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1757 Solved: 961[Submit][Statu ...
- 【BZOJ 1085】 [SCOI2005]骑士精神
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2, ...
- Codevs 2449 骑士精神 2005年省队选拔赛四川
2449 骑士精神 2005年省队选拔赛四川 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **大师 Master** 题目描述 Description 在一个5×5的棋盘上有12 ...
- BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )
一开始写了个 BFS 然后就 T 了... 这道题是迭代加深搜索 + A* -------------------------------------------------------------- ...
- [bzoj1805][SCOI2005]骑士精神 [启发式搜索]
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2, ...
- 【日常学习】【IDA*】codevs2449 骑士精神题解
题目描写叙述 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在不论什么时候一个骑士都能依照骑士的走法(它能够走到和它横坐标相差为1.纵坐标相差为2或 ...
随机推荐
- 八.安装Nginx
http://blog.csdn.net/grhlove123/article/details/47834673
- VS2013没有安装部署,安装图解
自vs2012后就已经没有安装向导了,VS2013安装是不带安装部署的,用 InstallShield Limited Edition for Visual Studio 解决安装部署问题 第一步:“ ...
- 用@ExceptionHandler 来进行异常处理
有时候我们想统一处理一个Controller中抛出的异常怎么搞呢? 直接在Controller里面加上用@ExceptionHandler标注一个处理异常的方法像下面这样子 @ExceptionHan ...
- composer的基本运用
Composer -- PHP依赖管理的新时代 一.简介 说到composer,绝大多数的开发人员都会用到.composer是一个什么工具呢? composer 是 PHP 用来管理依赖(depend ...
- AngularJS简介-起步阶段
AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使用HT ...
- CSS 高级选择器
相信各位如我一样的“抠图崽”和前端大佬们,在写网页样式的实话,总是免不了写下各种各样的选择器,再给选择的元素写入样式.最基本的元素选择器.class选择器.ID选择器等就不再过多的说了,相信大家都熟的 ...
- OpenID Connect Core 1.0(二)ID Token
2.ID Token(ID Token) OpenID Connect主要是对OAuth 2.0 能够使得终端用户通过ID Token的数据结构进行验证.当客户端和潜在的其他请求声明,ID Token ...
- 摩尔吧 FPGA培训
摩尔吧 FPGA培训 2017.7.30 第一天与非网摩尔吧创始人苏公雨给我们介绍了FPGA的发展历史,以及目前FPGA厂家的市场定位. 2017.7.30~2017.8.4 这个星期主要是学习画电 ...
- lable随堂笔记
lable标签与属性 lable标签:for属性,让标签与指定的input元素建立标签:将input元素包含在lable标签中. <table border="2" alig ...
- jar包导入本地maven库的操作
pom文件配置格式: <dependency> <groupId>A</groupId> <artifactId>B</artifactId> ...