BZOJ SCOI2005骑士精神
裸IDA*,ans从1到15循环来限制搜索深度。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int d,s[][],ans;
char c;
bool flag;
int ma[][]={{,,,,,},
{,,,,,},
{,,,,,},
{,,,,,},
{,,,,,},
{,,,,,}},dx[]={,,,,-,-,-,-},dy[]={,,-,-,-,-,,};
void swap(int &a,int &b){int c=a;a=b;b=c;}
bool check()
{
int i,j;
for (i=;i<=;++i)for (j=;j<=;++j)if (s[i][j]!=ma[i][j]) return ;
return ;
}
bool f(int g)
{
int h=,i,j;
for (i=;i<=;++i)for (j=;j<=;++j)if (s[i][j]!=ma[i][j])
{h++; if (g+h>ans) return ;}
return ;
}
void dfs(int x,int y,int g)
{
if (g==ans)
{
if (check()) flag=;
return;
}
if (flag) return;
int i,nowx,nowy;
for (i=;i<;++i)
{
nowx=x+dx[i];nowy=y+dy[i];
if ((nowx<)||(nowy<)||(nowx>)||(nowy>)) continue;
swap(s[x][y],s[nowx][nowy]);
if (f(g)) dfs (nowx,nowy,g+);
swap(s[nowx][nowy],s[x][y]);
}
}
int main()
{
int i,j,t,x,y;
scanf("%d\n",&t);
while (t>){t--;
for (i=;i<=;++i)
{
for (j=;j<=;++j)
{
c=getchar();
if (c=='*') s[i][j]=,x=i,y=j;
else s[i][j]=int(c-'');
}
scanf("\n");
} flag=;
for (ans=;ans<=;++ans)
{
dfs(x,y,);
if (flag) break;
}
if (flag) printf("%d\n",ans);
else printf("-1\n");
}
return ;
}
BZOJ SCOI2005骑士精神的更多相关文章
- Bzoj 1085: [SCOI2005]骑士精神 (dfs)
Bzoj 1085: [SCOI2005]骑士精神 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 dfs + 剪枝. 剪枝方法: ...
- BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )
一开始写了个 BFS 然后就 T 了... 这道题是迭代加深搜索 + A* -------------------------------------------------------------- ...
- BZOJ 1085 [SCOI2005]骑士精神 【A*启发式搜索】
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2838 Solved: 1663 [Submit][St ...
- BZOJ(7) 1085: [SCOI2005]骑士精神
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3233 Solved: 1911[Submit][Stat ...
- 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*算 ...
- 【bzoj1085】[SCOI2005]骑士精神
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1757 Solved: 961[Submit][Statu ...
- BZOJ_1085_[SCOI2005]骑士精神_IDDFS
BZOJ_1085_[SCOI2005]骑士精神_DFS Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可 ...
- [luogu P2324] [SCOI2005]骑士精神
[luogu P2324] [SCOI2005]骑士精神 题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1 ...
随机推荐
- fiddler对手机进行抓包
1.安装fiddler web debugger 2.Tools -->telerik fiddler options-->connections,勾选allow remote compu ...
- 深度优先搜索 codevs 1065 01字符串
codevs 1065 01字符串 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 输出仅有0和1组成的长度为n的字符串,并且 ...
- 怎样用ZBrush中复数对象进行工作
在ZBrush®中有两种方法可以使用复数对象即“多边形组”和“次工具”. 若有疑问可直接访问:http://www.zbrushcn.com/jichu/fushu-duixiang.html 什么是 ...
- BZOJ 1500 维修数列【Splay】
注意:1,内存限制,所以需要回收删除的点 2,当前节点的左连续区间和最大值=max(左子树的左连续区间和最大值,左子树的总和+当节点的值+max(右子树的左连续区间和最大值,0)):右连续区间和最大值 ...
- Spring 一二事(1)
简单介绍一下spring,一方面带新手入入门,一方面自己也重温一下第一个小工厂先暂时不用maven,下一个会用maven来来配置 jar包只需要一个,spring版本为2.5(暂时为2.5,后续更新, ...
- JetBrain WebStorm 注册码
webStorm : UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA ...
- jquery堆栈与队列
期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待期待
- p点到(a,b)点两所在直线的垂点坐标及p点是否在(a,b)两点所在直线上
/// <summary> /// p点到(a,b)点两所在直线的垂点坐标 /// </summary> /// <p ...
- DWM 窗体玻璃效果实现
我一直盼望着 Windows 新版本的发布.令人感兴趣的事情莫过于浏览 MSDN® 和 SDK 文档,查找一些可以利用和依赖的最新创新,然后让朋友和同事以及您的老板(如果幸运的话)大开眼界.Windo ...
- struts2中简单的文件上传
2016-08-31 一. 文件上传 利用commons-fileupload-1.2.1.jar实现简单的上传文件,首先在页面上填写表单,记得加上enctype="multip ...