【BZOJ1085】骑士精神
迭代加深搜索。
剪枝:当满足以下任意一个条件退出:
1.当前已搜到答案时(ans!=-1||sum==0)
2.剩余步数+1<当前局面与目标局面不同的格子数sum 时(因为n步最多改变n+1个格子)
3.当前步数>当前规定最大步数时
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int n=5,m=8,maxstep=15; 5 int a[6][6],b[6][6]={{0,0,0,0,0,0}, 6 {0,1,1,1,1,1},{0,0,1,1,1,1}, 7 {0,0,0,-1,1,1},{0,0,0,0,0,1}, 8 {0,0,0,0,0,0}}; 9 int fh[9]={0,-2,-1,1,2,2,1,-1,-2}, 10 fl[9]={0,1,2,2,1,-1,-2,-2,-1}; 11 int ex,ey,ans,step; 12 void swap(int,int,int,int),work(), 13 dfs(int,int,int),read(); 14 int change(char),check(),pd(int,int); 15 int main(){ 16 int t; 17 scanf("%d",&t); 18 for (int i=1;i<=t;i++) work(); 19 return 0; 20 } 21 void work(){ 22 ans=-1;read(); 23 for (step=0;step<=maxstep;step++){ 24 dfs(0,ex,ey); 25 if (ans!=-1) break; 26 } 27 printf("%d\n",ans); 28 return; 29 } 30 void read(){ 31 char c[7]; 32 for (int i=1;i<=n;i++){ 33 scanf("%s",&c); 34 for (int j=0;j<n;j++){ 35 a[i][j+1]=change(c[j]); 36 if (a[i][j+1]==-1){ 37 ex=i;ey=j+1; 38 } 39 } 40 } 41 return; 42 } 43 void dfs(int deep,int p,int q){ 44 int x,y,sum; 45 if (ans!=-1) return; 46 sum=check(); 47 if (deep==step){ 48 if (!sum) ans=deep;return; 49 } 50 else if (step-deep+1<sum) return; 51 if (deep>step) return; 52 for (int i=1;i<=m;i++){ 53 x=p+fh[i];y=q+fl[i]; 54 if (pd(x,y)){ 55 swap(x,y,p,q); 56 dfs(deep+1,x,y); 57 swap(x,y,p,q); 58 } 59 } 60 } 61 int change(char c){ 62 if (c=='1') return 1; 63 if (c=='0') return 0; 64 if (c=='*') return -1; 65 } 66 int check(){ 67 int sum=0; 68 for (int i=1;i<=n;i++) 69 for (int j=1;j<=n;j++) 70 if (a[i][j]!=b[i][j]) sum++; 71 return sum; 72 } 73 int pd(int p,int q){ 74 if (p>=1&&q>=1&&p<=n&&q<=n) return 1; 75 return 0; 76 } 77 void swap(int x,int y,int p,int q){ 78 int tmp; 79 tmp=a[x][y];a[x][y]=a[p][q];a[p][q]=tmp; 80 return; 81 }
STD
转载于:https://www.cnblogs.com/Absolute-Zero/p/5833960.html
【BZOJ1085】骑士精神相关推荐
- bzoj1085 骑士精神
骑士精神 题目背景: bzoj1085 分析:迭代加深搜索,每一次枚举走多少步能够到达,每一次搜索当前步数的可行解,判断是否到达最终目标位置,加入剪枝,如果中途发现当前的差异已经大于剩余步数,则表示这 ...
- bzoj1085骑士精神(搜索)
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1893 Solved: 1051 Description ...
- [SCOI2005][BZOJ1085] 骑士精神
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1112 Solved: 604 [Submit][Sta ...
- 【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB [Submit][Status][Discuss] Description 在一个5×5的棋盘上有12个白色 ...
- BZOJ1085 [SCOI2005] 骑士精神
[问题描述] 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相 ...
- 算法复习——迭代加深搜索(骑士精神bzoj1085)
题目: Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标 ...
- bzoj1085: [SCOI2005]骑士精神(a*)
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2555 Solved: 1472 [Submit][St ...
- [启发式搜索/A*] [SCOI2005]骑士精神题解
洛谷-骑士精神 启发式搜索-A* 估价函数 对于当前状态,我们可以将其与目标状态对比,得到一个预估的代价,即最少(不一定满足题意)的代价,得到这个代价的函数叫做估价函数 对于一个最短路问题来说,我们可 ...
- 『骑士精神 IDA*』
骑士精神(SCOI2005) Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵 ...
- [luogu 2324][SCOI 2005] 骑士精神 (A*算法)
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2, ...
最新文章
- 使用 Trace32 对 FLASH 编程
- enumeration学习
- tinyproxy代理
- bartender的安全策略不允许指定的用户执行此操作_MongoDB用户和角色解释系列(上)...
- html5 Canvas画图教程(5)—canvas里画曲线之arc方法
- network 拦截不到东西是怎么做到的?_都说读中职院校学不到东西,中职学生到底是怎么学习的?...
- Elasticsearch-head插件的安装与使用
- python元组和集合的区别_python 元组与list的区别
- 【RobotStudio学习笔记】(十)模块化程序
- TortoiseSVN常见用法
- Filebeat Filter - Dissect/DNS Reverse
- 计算机应用团队,【计算机应用论文】团队合作学习下计算机应用论文(共3025字)...
- Unity-日志工具
- 王者荣耀服务器维护9月27,王者荣耀9月27日更新维护公告 修复夏洛特技能bug等...
- RED5学习(二)——第一个red5项目
- 魔法少女小圆计算机音乐,魔法少女小圆 无损音乐合集
- 程序员返乡卖羊肉年销售1500万元,竟然是为了爱情?
- SRE重案调查组 第三集 | 探秘HTTP异步请求的“潘多拉魔盒”
- 实体链指(3)EL:End-to-End
- 【matplotlib】/【plt】中文设置为宋体,英文为Time New Roman
热门文章
- BZOJ 1270: [BeijingWc2008]雷涛的小猫( dp )
- c#做端口转发程序支持正向连接和反向链接
- Xcode中捕获iphone/ipad/ipod手机摄像头的实时视频数据
- ROS project part 1: Ubuntu中安装opencv包以及相应的依赖
- 阿里云对数据可靠性保障的一些思考
- [CareerCup] 8.7 Chat Server 聊天服务器
- svn怎么上传文件 — 百度经验无耻推广
- dataguru北京线下沙龙-第二部 《Oracle 索引优化思路--案例分享 -- 刘盛》
- 机房收费系统的合作版
- ai对话机器人实现方案_显然地引入了AI —无代码机器学习解决方案