【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
骑士精神
Time Limit: 10 Sec Memory Limit: 162 MB
[Submit][Status][Discuss]
Description
在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。
在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。
给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步数完成任务。
Input
第一行有一个正整数T(T<=10),表示一共有N组数据。接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,*表示空位。两组数据之间没有空行。
Output
对于每组数据都输出一行。如果能在15步以内(包括15步)到达目标状态,则输出步数,否则输出-1。
Sample Input
10110
01*11
10111
01001
00000
110*1
01110
01010
00100
Sample Output
-1
HINT
Ans<=15
Solution
看到这题,我们没有什么思路,只能运用搜索,然后把错位的个数当做估价,跑一遍A*就可以了。
Code
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
typedef long long s64; const int ONE = ; int T;
int a[][],Step,Vx,Vy;
char ch[];
bool PD;
int dx[]={,,-,-,,,-,-};
int dy[]={,,,,-,-,-,-};
int Goal[][]=
{
{,,,,,},
{,,,,,},
{,,,,,},
{,,,,,},
{,,,,,},
{,,,,,}
}; inline int get()
{
int res=,Q=; char c;
while( (c=getchar())< || c>)
if(c=='-')Q=-;
if(Q) res=c-;
while((c=getchar())>= && c<=)
res=res*+c-;
return res*Q;
} int Evaluation()
{
int res = ;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(a[i][j] != Goal[i][j])
res++;
return res;
} void Dfs(int T,int x,int y)
{
if(PD) return;
if(T == Step)
{
PD = !Evaluation();
return;
} for(int i=;i<;i++)
{
int Nx = x+dx[i], Ny = y+dy[i];
if(!(<=Nx && Nx<= && <=Ny && Ny<=)) continue;
swap(a[x][y], a[Nx][Ny]);
if(Evaluation() + T <= Step) Dfs(T+, Nx,Ny);
swap(a[x][y], a[Nx][Ny]);
}
} void Solve()
{
for(int i=;i<=;i++)
{
scanf("%s",ch+);
for(int j=;j<=;j++)
{
if(ch[j] == '*') {a[i][j] = , Vx=i,Vy=j;}
else a[i][j] = ch[j]-'';
}
} PD=;
for(Step=;Step<=;Step++)
{
Dfs(,Vx,Vy);
if(PD) break;
} printf("%d\n",PD== ? Step:-);
} int main()
{
T=get();
while(T--)
Solve();
}
【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]的更多相关文章
- BZOJ1085 SCOI2005 骑士精神【IDA* 启发式迭代加深】
BZOJ1085 SCOI2005 骑士精神 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐 ...
- BZOJ1085: [SCOI2005]骑士精神 [迭代加深搜索 IDA*]
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1800 Solved: 984[Submit][Statu ...
- [BZOJ1085] [SCOI2005] 骑士精神 (A*)
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2, ...
- B1085 [SCOI2005]骑士精神 A*搜索
其实就是一个爆搜加剪枝.直接爆搜肯定不行,而A*算法则是想假如剩下都是最优的话,我当前步数还是不足以达到这个状态,那么就直接返回,因为最优状态也无法做到显然不行. 这道题可以用A*最主要就是因为有15 ...
- [BZOJ1085][SCOI2005]骑士精神 搜索
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1085 大的思路是迭代加深搜索,我们加一个明显的剪枝,当棋盘中位置不对的骑士的数目加上已经走 ...
- [BZOJ 1085] [SCOI2005] 骑士精神 [ IDA* 搜索 ]
题目链接 : BZOJ 1085 题目分析 : 本题中可能的状态会有 (2^24) * 25 种状态,需要使用优秀的搜索方式和一些优化技巧. 我使用的是 IDA* 搜索,从小到大枚举步数,每次 DFS ...
- bzoj1085 [SCOI2005]骑士精神——IDA*
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 搜索,IDA*,估价就是最少需要跳的步数: 代码意外地挺好写的,memcmp 用起来好 ...
- BZOJ1085: [SCOI2005]骑士精神
传送门 dfs+A*优化. A*是人工智能算法,属于启发式搜索的一部分.第一次知道这个名词是在写虫食算的时候闵神说这个用A*搞跑的比谁都快..但是当时搜了很多资料想搞清楚这个东西,但是当时还是太拿衣服 ...
- BZOJ1085 [SCOI2005]骑士精神(IDA*)
IDA*是IDS的基础上加上满足A*算法的估值函数来剪枝的搜索算法. 这题代码量挺少的,可以看出整个IDA*的框架: #include<cstdio> #include<cstrin ...
- 【BZOJ1085】[SCOI2005]骑士精神 双向BFS
[BZOJ1085][SCOI2005]骑士精神 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它 ...
随机推荐
- 软工1816 · Alpha冲刺(1/10)
团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 前后端代码规范统一 针对之前的alpha冲刺安排进一步细化任务卡片 明确apl ...
- 第一周—Fortran语言学习
使用教材:Fortran95程序设计[彭国伦] 第二章 编译器的使用 编译结果的好坏 1.翻译正确 2.执行文件的运行效率 3.翻译出来的执行码的长短 4.编译过程花费的时间 5.编译器提供Debug ...
- iOS开发改变字符串中指定字符颜色,大小等等
NSString *strJTGZ = [NSString stringWithFormat:@"交通管制%d处 ",[jtgz intValue]]; NSMutableAttr ...
- 3DMAX贴图无法显示
问题描述:我在点击"将材质指定给选定对象"按钮之后,模型只是变灰了,没有显示出我贴的图. 原因是:没有显示贴图. 我的解决方案:点击材质编辑器里面的"视口中显示敏感处理材 ...
- angular4中使用jquer插件
有以下办法 1 在html文档头部引入jquery插件依赖,但是文档一旦变动就麻烦了 2 使用指令:http://www.cnblogs.com/liuyt/p/5810100.html 指令是把利器 ...
- 【Docker 命令】- inspect命令
docker inspect : 获取容器/镜像的元数据. 语法 docker inspect [OPTIONS] NAME|ID [NAME|ID...] OPTIONS说明: -f :指定返回值的 ...
- python2 对URL编码进行编译
在请求页面时有时会返回类似: %E8%AF%A5985%E5%A4%A7%E5%AD%A6%E5%B8%B8%E5%B9%B4%E4%BD%8D%E5%B1%85%E5%9B%BD%E5%86%85% ...
- activeMQ 讲解及实战
#### 软件架构项目中需要用到activeMQ 下载地址:http://activemq.apache.org/download.html #### 安装教程需要安装jdk环境activeMQ免安装 ...
- 新jQuery中attr 与 prop的不同
使用最新版本jquery,在对checkbox操作时发现 attr属性全选,反选等不起作用,后查发现新版本对标签属性的设置发生了变化. 在高版本的jquery引入prop方法后,什么时候该用prop? ...
- 将下载到本地的JAR包手动添加到Maven仓库(转)
常用Maven仓库网址:http://mvnrepository.com/http://search.maven.org/http://repository.sonatype.org/content/ ...