BZOJ1085: [SCOI2005]骑士精神
【传送门:BZOJ1085】
简要题意:
有一个5*5的棋盘,棋盘上有12个白棋子,12个黑棋子,和一个空格,每只棋子只能按照马走日的规则移动,求出最少步数达到以下状态
题解:
DFS+A*
DFS很容易做,不过时间复杂度太高
所以用A*来优化时间
A*的好处预判当前递归到结束得到的值,从而判断是否进入递归,部分判断,避免遍历太多无用点
参考代码:
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; int a[6][6]; const int dx[9]={0,1,1,-1,-1,2,2,-2,-2}; const int dy[9]={0,2,-2,2,-2,1,-1,1,-1}; bool bk; int ans[6][6]= {{0,0,0,0,0,0},{0,1,1,1,1,1},{0,0,1,1,1,1},{0,0,0,2,1,1},{0,0,0,0,0,1},{0,0,0,0,0,0} }; bool pd() {for(int i=1;i<=5;i++) for(int j=1;j<=5;j++) if(a[i][j]!=ans[i][j]) return false;return true; } int w; bool pdA(int k) {int s=0;for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){if(a[i][j]!=ans[i][j]){s++;if(s+k>w) return false;}}}return true; } void dfs(int x,int y,int k) {if(bk==true) return ;if(k==w){if(pd()==true) bk=true;return ;}else{for(int i=1;i<=8;i++){int tx=x+dx[i],ty=y+dy[i];if(tx<1||tx>5||ty<1||ty>5) continue;swap(a[x][y],a[tx][ty]);if(pdA(k)==true) dfs(tx,ty,k+1);swap(a[x][y],a[tx][ty]);}} } int main() {int T;scanf("%d",&T);while(T--){char st[10];int kx,ky;for(int i=1;i<=5;i++){scanf("%s",st+1);for(int j=1;j<=5;j++){if(st[j]=='*'){a[i][j]=2;kx=i,ky=j;}else a[i][j]=st[j]-'0';}}bk=false;for(w=1;w<=15;w++){dfs(kx,ky,0);if(bk==true){printf("%d\n",w);break;}}if(bk==false) printf("-1\n");}return 0; }
转载于:https://www.cnblogs.com/Never-mind/p/8608399.html
BZOJ1085: [SCOI2005]骑士精神相关推荐
- bzoj1085: [SCOI2005]骑士精神(a*)
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2555 Solved: 1472 [Submit][St ...
- BZOJ1085 [SCOI2005] 骑士精神
[问题描述] 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相 ...
- 洛谷 P2324 [SCOI2005]骑士精神 解题报告
P2324 [SCOI2005]骑士精神 题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,* ...
- BZOJ 1085 [SCOI2005]骑士精神 【A*启发式搜索】
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2838 Solved: 1663 [Submit][St ...
- bzoj 1085: [SCOI2005]骑士精神(IDA*)
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2296 Solved: 1328 [Submit][St ...
- [启发式搜索/A*] [SCOI2005]骑士精神题解
洛谷-骑士精神 启发式搜索-A* 估价函数 对于当前状态,我们可以将其与目标状态对比,得到一个预估的代价,即最少(不一定满足题意)的代价,得到这个代价的函数叫做估价函数 对于一个最短路问题来说,我们可 ...
- 【题解】P2324[SCOI2005] 骑士精神
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位. 在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为 ...
- [A*,启发式搜索] [SCOI2005] 骑士精神
链接:https://ac.nowcoder.com/acm/problem/20247 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 1085: [SCOI2005]骑士精神
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2 ...
最新文章
- 独家 | 一文读懂LinkedIn个性化推荐模型及建模原理
- for循环语句的用法
- Linux系统下GNU Wget 命令用法详解及其参数说明
- windows 下oracle 数据库 rman 备份
- Redis开发运维实践数据操作之HyperLogLog操作
- pinia中文文档 指导文档中文翻译版 pinia指导中文翻译
- php二分查找法实例
- win10 +cude9.2+相匹配的cudnn+相匹配的tensorflow+ssd学习之路(问题百出2)
- Oracle 错误疑难解决方案和总结
- 车辆身份特征识别引擎
- How to Become a Straight-A student
- YYlabelCopy
- 笔记本电脑黑屏 笔记本开机黑屏 笔记本黑屏怎么办
- 链游成公链新宠,风口之下究竟哪家称王? 1
- centos6/7 vault源使用
- 长沙鸿蒙置业楼盘,来了!来了!湖南金融中心北中心,全新盘规划公示!刚需户型为主!...
- 百度网盘压缩下载文件的CRC校验错误的解决方法
- 如何在SpringBootOAuth服务器中实现双因素身份验证?第一部分:配置
- BIOS升级与CMOS设置
- ‘xxx‘ is not public in ‘xxx‘,Cannot be accessed from outside package