肯定是搜索题无疑问,

首先要求在15步以内(包括15步)到达目标状态,也就是限定了搜索的深度,于是我们用dfs更合适

但这样复杂度仍然太大,原因就是我们在搜索中做了很多很不优的尝试

考虑当前状态若与目标状态有x处不相同,我们至少要移动x-1步才能成功

如果当前移动次数+x-1>=已找到的最小移动次数(没找到就为16),那么再往下移动肯定是没有意义的

这样我们就可以构造出估价函数,大大优化时间复杂度

 const dx:array[..] of integer=(-,,-,,-,-,,);
      dy:array[..] of integer=(,,-,-,-,,-,);
      en:array[..,..] of integer=((,,,,),
                                      (,,,,),
                                      (,,-,,),
                                      (,,,,),
                                      (,,,,));
var num,a:array[..,..] of integer;
    k,min,x0,y0,x1,y1,i,j,t:longint;
    s:string; procedure swap(var a,b:integer);
  var c:integer;
  begin
    c:=a;
    a:=b;
    b:=c;
  end; function check:longint;
  var i,j:integer;
  begin
    check:=;
    for i:= to do
      for j:= to do
        if a[i,j]<>en[i,j] then inc(check);
    exit(check-);
  end; procedure dfs(x,y,d:integer);
  var xx,yy,i,p:integer;
  begin
    if d>=min then exit;
    p:=check;
    if p=- then
    begin
      min:=d;
      exit;
    end;
    if p+d>=min then exit;
    for i:= to do
    begin
      xx:=x+dx[i];
      yy:=y+dy[i];
      if (xx>) and (xx<=) and (yy>) and (yy<=) then
      begin
        swap(a[x,y],a[xx,yy]);
        dfs(xx,yy,d+);
        swap(a[x,y],a[xx,yy]);
      end;
    end;
  end; begin
  readln(t);
  while t> do
  begin
    min:=;
    k:=;
    for i:= to do
    begin
      readln(s);
      for j:= to do
      begin
        if s[j]='*' then
        begin
          x0:=i;
          y0:=j;
          a[i,j]:=-;
        end
        else a[i,j]:=ord(s[j])-;
      end;
    end;
    dfs(x0,y0,);
    if min= then writeln(-) else writeln(min);
    dec(t);
  end;
end.

bzoj1085的更多相关文章

  1. 【bzoj1085】 SCOI2005—骑士精神

    http://www.lydsy.com/JudgeOnline/problem.php?id=1085 (题目链接) 题意 给出一个初始局面,问能否在15步内走到最终局面,并输出最少步数. Solu ...

  2. BZOJ1085 SCOI2005 骑士精神【IDA* 启发式迭代加深】

    BZOJ1085 SCOI2005 骑士精神 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐 ...

  3. 【BZOJ1085】[SCOI2005]骑士精神 双向BFS

    [BZOJ1085][SCOI2005]骑士精神 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它 ...

  4. BZOJ1085: [SCOI2005]骑士精神 [迭代加深搜索 IDA*]

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1800  Solved: 984[Submit][Statu ...

  5. BZOJ1085: [SCOI2005]骑士精神

    传送门 dfs+A*优化. A*是人工智能算法,属于启发式搜索的一部分.第一次知道这个名词是在写虫食算的时候闵神说这个用A*搞跑的比谁都快..但是当时搜了很多资料想搞清楚这个东西,但是当时还是太拿衣服 ...

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

    IDA*是IDS的基础上加上满足A*算法的估值函数来剪枝的搜索算法. 这题代码量挺少的,可以看出整个IDA*的框架: #include<cstdio> #include<cstrin ...

  7. 【bzoj1085】[SCOI2005]骑士精神

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1757  Solved: 961[Submit][Statu ...

  8. [BZOJ1085] [SCOI2005] 骑士精神 (A*)

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

  9. bzoj1085 骑士精神

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

随机推荐

  1. linux中转换编码

    iconv -f gb2312 -t utf-8 文件 -o 输出文件名 iconv -f gb2312 -t utf-8 文件 #直接在终端中显示 enca -L zh_CN file    #查看 ...

  2. ASP.NET网络编程之-HTTP协议

    HTTP协议由来已久,最近复习到它,好记性不如烂笔头,在此留下自己的总结,算是为后面再要看时用吧.HTTP协议是一个在B/S架构中约束客户端(浏览器)和服务端(比较常见的是就是IIS服务器,关于IIS ...

  3. swift 自行理解

  4. 给python类动态添加方法(method)

    群里有人问如何做到 def foo(): pass class Bar(object): pass Bar.set_instance_method(foo) b = Bar() b.foo() 这个其 ...

  5. [zz]安装Ubuntu 15.10后要做的事

    很有用,收藏 http://blog.csdn.net/skykingf/article/details/45267517

  6. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  7. 记录创建企业Wiki的几个开源项目

    很多著名的企业Wiki都是开源产品,如Foswiki(基于Perl),TWiki(基于Perl)等,另外有Mindtouch(基于PHP, C#),Confluence(基于Java)等.维基道的Wi ...

  8. 【收集整理】Linux下的目录讲解

    Linux下的目录介绍:在Linux系统中,一切东西都是存放在一个唯一的“虚拟文件系统”中的,这个“虚拟文件系统”是树状的结构以一个根目录开始.以文件来表示所有逻辑实体和非逻辑实体,逻辑实体指文件和目 ...

  9. struts2请求过程源码分析(转)

    Struts2是Struts社区和WebWork社区的共同成果,我们甚至 可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品, ...

  10. Spring Mvc Controller间跳转 重定向 传参 (转)

    原文链接:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景     需求:spring MVC框架con ...