Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 3229 Solved: 1908
[Submit][Status][Discuss]
Description

  在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步数完成任务。

Input

  第一行有一个正整数T(T<=10),表示一共有N组数据。接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑
士,*表示空位。两组数据之间没有空行。

Output

  对于每组数据都输出一行。如果能在15步以内(包括15步)到达目标状态,则输出步数,否则输出-1。

Sample Input

2

10110

01*11

10111

01001

00000

01011

110*1

01110

01010

00100

Sample Output

7

-1

题解

看数据范围不大,A*搜索,估价函数为剩余没有到达的骑士的个数。

代码

#include<bits/stdc++.h>using namespace std;
//const int MAXN = int ans=16;
int T,n,a[10][10];
int xx[8]={-2,-1,1,2,2,1,-1,-2},yy[8]={1,2,2,1,-1,-2,-2,-1};
int win[5][5]={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};inline int jud(){int sum=0;for(register int i=1;i<=5;i++)for(register int j=1;j<=5;j++){if(a[i][j]!=win[i-1][j-1]) sum++;}return sum;
}inline void dfs(int x,int y,int prex,int prey,int cnt){if(x==prex && y==prey) return;if(cnt>15) return; int kk=jud();if(kk==0) {ans=min(ans,cnt);return;}if(kk+cnt>ans) return;for(int k=0;k<=7;k++){int i=x+xx[k];int j=y+yy[k];if(i>=1 && i<=5 && j>=1 && j<=5){a[x][y]^=a[i][j]^=a[x][y]^=a[i][j];dfs(i,j,x,y,cnt+1);a[x][y]^=a[i][j]^=a[x][y]^=a[i][j];}}
}int main(){ios::sync_with_stdio(false);cin>>T;while(T--){char ch;int sti,stj;ans=16;for(register int i=1;i<=5;i++){for(register int j=1;j<=5;j++){ cin>>ch;if(ch=='0') a[i][j]=0;else if(ch=='1') a[i][j]=1;else a[i][j]=2,sti=i,stj=j;
//              cout<<a[i][j];}
//          cout<<"\n";}dfs(sti,stj,0,0,0);if(ans>15) cout<<-1<<endl;else cout<<ans<<endl;}return 0;
}

BZOJ 1085 骑士精神相关推荐

  1. BZOJ 1085 骑士精神 迭代加深搜索+A*

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1085 题目大意: 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个 ...

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

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

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

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

  4. bzoj 1085: [SCOI2005]骑士精神(IDA*)

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

  5. 1085: [SCOI2005]骑士精神

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

  6. BZOJ1085 [SCOI2005] 骑士精神

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

  7. bzoj1085骑士精神(搜索)

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1893  Solved: 1051 Description ...

  8. [SCOI2005][BZOJ1085] 骑士精神

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1112  Solved: 604 [Submit][Sta ...

  9. bzoj1085: [SCOI2005]骑士精神(a*)

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

最新文章

  1. java定义一个盒子类box_定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和height(...
  2. 指定Gradle构建属性
  3. css裁剪clip-path画多边形
  4. 【转】asp.net Core 系列【一】——创建Web应用
  5. SinoBBD跨入大数据产业发展新模式
  6. java与模式孙悟空_悟空模式-java-工厂方法模式
  7. 下载基于LigerUI+JBPM5自定义表单+Node.js的J2EE大型金融项目《财务预算系统》
  8. 收藏精美网页设计作品的200佳网站推荐(系列五)
  9. Python配置opencv并在命令行运行
  10. 排序算法-桶排序(入门级别)
  11. cloudera search1.0.0环境搭建(2):利用flume-ng的MorphlineSolrSink实现近实时(NRT)搜索
  12. 【c语言课程设计】C语言校园卡管理系统
  13. ubuntu20.04安装无线网卡驱动
  14. Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage We noticed that your app requires
  15. 如何显示 word 左侧目录大纲
  16. 『杭电1897』SnowWolf‘s Wine Shop
  17. 中国大学mooc c语言作业,中国大学mooc程序设计入门——C语言:第三周测验(示例代码)...
  18. P1567 统计天数(洛谷)
  19. SQL 常用基础语句
  20. Huggingface简介及BERT代码浅析

热门文章

  1. vue router html模板,vue.router
  2. Http是传输层吗?TCP是个么层?IP/TCP与HTTP的关系?
  3. 2017年9月10日训练日记
  4. jq里的event对象
  5. Python库的安装详解
  6. 模式识别:C-means(K-means)聚类算法与分级聚类(层次聚类)算法
  7. K-Means聚类算法---C++
  8. 聚类(2)——层次聚类 Hierarchical Clustering
  9. Plants vs. Zombies(二分)
  10. python同时运行多个程序_如何同时运行两个python循环?