【SCOI 2005】 骑士精神
【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=1085
【算法】
IDA*
【代码】
#include<bits/stdc++.h>
using namespace std;
const int dx[] = {-,-,-,-,,,,};
const int dy[] = {-,,-,,-,,-,};
const int goal[][] =
{
{,,,,},
{,,,,},
{,,,,},
{,,,,},
{,,,,}
}; int i,j,T,x,y,step;
char c;
bool solved;
int mp[][]; inline bool valid(int x,int y)
{
return x >= && x < && y >= && y < ;
}
inline int f()
{
int i,j;
int ret = ;
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
if (mp[i][j] != goal[i][j])
ret++;
}
}
return ret - ;
} inline bool IDDFS(int dep,int x,int y)
{
int i,tx,ty;
if (dep + f() > step) return false;
if (dep == step) return true;
for (i = ; i < ; i++)
{
tx = x + dx[i];
ty = y + dy[i];
if (valid(tx,ty))
{
swap(mp[x][y],mp[tx][ty]);
if (IDDFS(dep+,tx,ty)) return true;
swap(mp[x][y],mp[tx][ty]);
}
}
return false;
} int main()
{ scanf("%d",&T);
getchar();
while (T--)
{
solved = false;
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
c = getchar();
if (c == '') mp[i][j] = ;
else if (c == '') mp[i][j] = ;
else
{
x = i;
y = j;
mp[i][j] = ;
}
}
getchar();
}
for (i = ; i <= ; i++)
{
step = i;
if (IDDFS(,x,y))
{
printf("%d\n",i);
solved = true;
break;
}
}
if (!solved) printf("-1\n");
} return ; }
【SCOI 2005】 骑士精神的更多相关文章
- [luogu 2324][SCOI 2005] 骑士精神 (A*算法)
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2, ...
- 解题:SCOI 2005 骑士精神
题面 我把这个当做IDA*的模板题的说,说说我个人对IDA*的理解 IDA*是一个DFS,和A*一样,它也有一个乐观的估价函数.这里这个估价函数是用来限制状态的扩展的,如果当前代价加上乐观的估计都无法 ...
- Codevs 2449 骑士精神 2005年省队选拔赛四川
2449 骑士精神 2005年省队选拔赛四川 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **大师 Master** 题目描述 Description 在一个5×5的棋盘上有12 ...
- 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, ...
- BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )
一开始写了个 BFS 然后就 T 了... 这道题是迭代加深搜索 + A* -------------------------------------------------------------- ...
- [bzoj1805][SCOI2005]骑士精神 [启发式搜索]
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2, ...
随机推荐
- PHP 框架Laravel Eloquent 实现身份验证
PHP自从5.3后似乎又热度又回升, 最近了解了一下PHP框架之一Laravel, 最近最新的版本已经是4.3 基本的结构这里不讲, 要了解可以在这里看文档 http://v4.golaravel. ...
- 浏览器缓存机制(HTTP缓存机制)
其机制是根据HTTP报文的缓存标识进行的. 过程:浏览器发起HTTP请求 – 服务器响应该请求.那么浏览器第一次向服务器发起该请求后拿到请求结果,会根据响应报文中HTTP头的缓存标识,决定是否缓存结果 ...
- angular js 正序倒叙
<!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- HTML5标签构成
一个HTML5文件是由一些列的元素和标签组成的.元素是HTML5文件的重要组成部分,例如title(文件标题).img(图像)及table(表格)等.元素名不区分大小写,而HTML5用标签来规定元素的 ...
- easyui combobox的增加全选解决方案
1.解决方案背景: 项目中偶然需要用到easyui的combobox的组件,但是本组件自己没有包含全选的api事件.搜索了一些解决方案,但是不是很符合,后来发现是因为所使用的版本不一致所导致的.项 ...
- ANN:ML方法与概率图模型
一.ML方法分类: 产生式模型和判别式模型 假定输入x,类别标签y - 产生式模型(生成模型)估计联合概率P(x,y),因可以根据联合概率来生成样本:HMMs ...
- Python-通过configparser读写配置文件
Python读写配置文件: 1.创建配置文件(文件名以.conf或.ini结束的文件表示配置文件) 2.导入所需模块 OS, configparser >>> import os & ...
- pycharm,右键执行run unittests in xx.py后,__main__:后的代码没执行
如图所示:执行py文件后,打印__name__的名是模块名,而非__main__ 查了好久,发现这个问题跟unittest这个类有关系,执行单元测试的py脚本时,不要右键run unittest,在p ...
- CorelDRAW2019版本下载,CorelDRAW最新版新增功能(全)
使用CorelDRAW 2019,随时随地进行设计创作.无论您使用的是 Windows 或 Mac,都能在为您的平台量身设计的直观界面中,随心所欲地自由创作.无论您是热衷于像素,执迷于无缝输出或沉浸于 ...
- 初探CORBA组件化编程
1.掌握组件化开发的概念,了解CORBA模型及ORB机制:2.掌握CORBA组件编程方法.二.实验内容(一).步骤1.配制环境JDK环境.2.编写编译IDL接口.3.编写编译服务端程序.4.编写编译客 ...