bzoj 1085(A*)
来源:互联网 发布:部落冲突三王升级数据 编辑:程序博客网 时间:2024/06/05 20:19
传送门
题解:启发式搜索(A*)
evalue( )为估价函数,预估如果可以在限定步数内实现才继续,是一种优越的剪枝。
注意:代码注释中-1的:局面中有i和不同至少要跳i-1步。
多谢Pendragon大佬指出本蒟蒻的错误。
#include<bits/stdc++.h>using namespace std;const int MAXN=6;int goal[MAXN][MAXN]={{1,1,1,1,1},{0,1,1,1,1},{0,0,2,1,1},{0,0,0,0,1},{0,0,0,0,0},};int mp[MAXN][MAXN];int kase,sx,sy,maxd,dx[8]={1,1,-1,-1,2,2,-2,-2},dy[8]={2,-2,2,-2,1,-1,1,-1};bool flag;inline bool check() { for (int i=0;i<5;++i) for (int j=0;j<5;++j) if (mp[i][j]^goal[i][j]) return false; return true;}inline int evalue() {//A* int sum=0; for (int i=0;i<5;++i) for (int j=0;j<5;++j) if (mp[i][j]^goal[i][j]) ++sum; return sum; }void dfs(int x,int y,int d){ if (d>maxd) {if (check()) flag=true;return ;} for (int i=0;i<8;++i) { int nx=x+dx[i],ny=y+dy[i]; if (nx>=0&&nx<5&&ny>=0&&ny<5) { swap(mp[nx][ny],mp[x][y]); if (evalue()+d-1<=maxd) dfs(nx,ny,d+1); if (flag) return ; swap(mp[nx][ny],mp[x][y]); } }}int main() {// freopen("bzoj 1085.in","r",stdin); scanf("%d",&kase); while (kase--) { flag=false; for (int i=0;i<5;++i) { char ss[5]; scanf("%s",ss); for (int j=0;j<5;++j) { if (ss[j]=='0') mp[i][j]=0; else if (ss[j]=='1') mp[i][j]=1; else mp[i][j]=2,sx=i,sy=j; } } if (check()) {puts("0");continue;} for (maxd=1;maxd<=15;++maxd) { dfs(sx,sy,1); if (flag) break; } printf("%d\n",flag?maxd:-1); } return 0;}
阅读全文
0 0
- bzoj 1085(A*)
- (bzoj 1085 [SCOI2005]骑士精神)<A*>
- BZOJ 1085 骑士精神 (A*)
- bzoj 1673(A*)
- BZOJ 1085 骑士精神 A*
- bzoj 1598(SPFA+A*)
- BZOJ 1085([SCOI2005]骑士精神-A*)
- BZOJ 1085 骑士精神 DFS+A*
- BZOJ 1085 [SCOI2005]骑士精神 A* 搜索
- BZOJ 1085 [SCOI2005]骑士精神 A*搜索
- bzoj 4178: A
- 【bzoj 1000】A+B
- BZOJ 1085 [SCOI2005]骑士精神 【A*启发式搜索】
- BZOJ-1975 魔法猪学院 K短路 (A*+SPFA)
- BZOJ 1014: [JSOI2008]火星人prefix(未A待续)
- 【bzoj 十连测】[noip2016第二场]Problem A. Divisors(暴力)
- bzoj 3489: A simple rmq problem (KD-tree)
- bzoj 4842: [Neerc2016]Delight for a Cat (费用流)
- iOS 环信打包
- 程序中,浮点型存储
- IDEA将Mavn项目发布到自己的私服仓库
- vue2.x实例生命周期
- 数乌龟
- bzoj 1085(A*)
- DataTable 初识
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- NTP服务器搭建与测试
- 欢迎使用CSDN-markdown编辑器
- mysql str_to_date字符串转换为日期
- Label适应文字大小
- dlib 08 dlib自带demo 基于ResNet34的imagenet图像分类
- spring的@Transactional注解详细用法