IDA*算法

  Orz HZWER

  A*+迭代加深搜索=IDA*

  这题的估价相当于一个可行性剪枝,即如果当前走的步数s+未归位的点数>搜索深度k,则剪枝

  

 /**************************************************************
Problem: 1085
User: Tunix
Language: C++
Result: Accepted
Time:1388 ms
Memory:1272 kb
****************************************************************/ //BZOJ 1085
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std; int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>'') {if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<='') {v=v*+ch-''; ch=getchar();}
return v*=sign;
}
/*******************tamplate********************/
int k;
const int ans[][]={{,,,,},
{,,,,},
{,,,,},
{,,,,},
{,,,,}};
const int fx[]={,,-,-,,,-,-},
fy[]={,-,,-,,-,,-}; bool flag=;
bool judge(int a[][]){
rep(i,)
rep(j,)
if (ans[i][j]!=a[i][j]) return ;
return ;
}
bool eva(int a[][],int s){
int v=;
rep(i,)
rep(j,)
if (a[i][j]!=ans[i][j]){
v++;
if(v+s>k) return ;
}
return ;
}
//v¼´Îª¹À¼Ûº¯Êý£¨Èç¹û¸úans²î¾àÌ«´ó£¬²»¿ÉÄÜÔÚk²½Ö®ÄÚ³ö½â£¬ÔòÉáÆú
void search(int s,int a[][],int x,int y){
if (s==k) {if (judge(a)) flag=; return;}
if (flag==) return;
rep(i,){
int tx=x+fx[i],ty=y+fy[i];
if (tx<||tx>||ty<||ty>) continue;
swap(a[x][y],a[tx][ty]);
if (eva(a,s)) search(s+,a,tx,ty);
swap(a[x][y],a[tx][ty]);
}
}
int main(){
int T=getint();
char ch[];
while(T--){
int a[][],x,y;
memset(a,,sizeof a);
rep(i,){
scanf("%s",ch);
rep(j,)
if (ch[j]=='*'){ a[i][j]=;x=i;y=j; }
else a[i][j]=ch[j]-'';
}
flag=;
for(k=;k<=;++k){
search(,a,x,y); if (flag){ printf("%d\n",k);break;}
}
if (!flag) printf("-1\n");
}
return ;
}

【BZOJ】【1085】【SCOI2005】骑士精神的更多相关文章

  1. Bzoj 1085: [SCOI2005]骑士精神 (dfs)

    Bzoj 1085: [SCOI2005]骑士精神 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 dfs + 剪枝. 剪枝方法: ...

  2. BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )

    一开始写了个 BFS 然后就 T 了... 这道题是迭代加深搜索 + A* -------------------------------------------------------------- ...

  3. BZOJ 1085 [SCOI2005]骑士精神 【A*启发式搜索】

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2838  Solved: 1663 [Submit][St ...

  4. [BZOJ 1085] [SCOI2005] 骑士精神 [ IDA* 搜索 ]

    题目链接 : BZOJ 1085 题目分析 : 本题中可能的状态会有 (2^24) * 25 种状态,需要使用优秀的搜索方式和一些优化技巧. 我使用的是 IDA* 搜索,从小到大枚举步数,每次 DFS ...

  5. bzoj 1085: [SCOI2005]骑士精神

    Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士,且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵 ...

  6. [BZOJ 1085][SCOI2005]骑士精神(IDA*)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1085 分析: 首先第一感觉是宽搜,但是空间需要8^15*5*5,明显不够,又鉴于最大深 ...

  7. BZOJ.1085.[SCOI2005]骑士精神(迭代加深搜索)

    题目链接 最小步数这类,适合用迭代加深搜索. 用空格走代替骑士. 搜索时记录上一步防止来回走. 不需要每次判断是否都在位置,可以计算出不在对应位置的骑士有多少个.而且每次复原一个骑士至少需要一步. 空 ...

  8. bzoj 1085 [SCOI2005]骑士精神——IDA*

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 迭代加深搜索. 估价函数是为了预计步数来剪枝,所以要优于实际步数. 没错,不是为了确定 ...

  9. bzoj 1085: [SCOI2005]骑士精神 IDA*

    题目链接 给一个图, 目标位置是确定的, 问你能否在15步之内达到目标位置. 因为只有15步, 所以直接ida* #include<bits/stdc++.h> using namespa ...

  10. BZOJ 1085: [SCOI2005]骑士精神(A*算法)

    第一次写A*算法(这就是A*?如果这就是A*的话,那不就只是搜索的一个优化了= =,不过h函数如果弄难一点真的有些难设计) 其实就是判断t+h(x)(t为当前步数,h(x)为达到当前状态的最小步数) ...

随机推荐

  1. 入门必须掌握8个DOS命令

    一,ping 它是用来检查网络是否通畅或者网络连接速度的命令.作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP ...

  2. jQuery$命名冲突问题解决方法

    也许你在看此文章之前还不知道jquery有一个noConflict()东西了,它就是为了避免与其它js插件碰到相同变量的一个解决方法,利用noConflict()可以把变量存到其它指定的变量中去如,我 ...

  3. sql修改字段长度

    语法: alter table <表名> alter column <字段名> 新类型名(长度) 示例:假如有名T1,字段名F1,原来F1为varchar(3),现在要改为va ...

  4. ie、IE兼容模式,提示SCRIPT1028: 缺少标识符、字符串或数字

    旧版ie下json最后一项是不允许有逗号的 为了更好的兼容各个浏览器,json最后的逗号最好不加

  5. java检测端口号是否配占用

    java检测端口号是否被占用的工具类:       package com.frank.util; import java.io.IOException; import java.net.InetAd ...

  6. win2008r2 iis7.5 mvc 403.14

    痛苦的经历,网上各种办法尝试,不成功 环境如标题:发布403.14 错误 解决办法:很简单,发布时,不要使用预编译(发布期间预编译选项 不能选中) 之后就好了...折磨人的小妖精

  7. Crusher Django 学习笔记1 hello world

    http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial1-hello-world.html 随便学习一下goagent ...

  8. iphone document 图片存储和读取

    转载自:http://longquan.iteye.com/blog/1669990 存: //此处首先指定了图片存取路径(默认写到应用程序沙盒 中) NSArray *paths = NSSearc ...

  9. 无限的hypotheses 变成有限的dichotomies

    给定任意D,它是某些H的Bad Sample(即Ein和Eout不接近)的概率为: 即H中备选函数的数量M=|H|越少,样本数据量N越大,则样本成为坏样本的概率越小.在一个可接受的概率水平上,学习算法 ...

  10. Python中Cookie的处理(一)Cookie库

    Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理.要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头: Set-Cookie:session= ...