目录

  • 题目
  • 思路
  • $Code$


题目

思路

$dfs$。

$Code$

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;
int t,mxd,map[6][6],b[6][6];//map存储现在骑士的分布,b是目标
int dx[8]={-2,-2,-1,1,-1,1,2,2},dy[8]={-1,1,2, 2,-2,-2,-1,1};//顺序一定要讲究
void work(){b[1][1]=1,b[1][2]=1,b[1][3]=1,b[1][4]=1,b[1][5]=1;b[2][1]=0,b[2][2]=1,b[2][3]=1,b[2][4]=1,b[2][5]=1;b[3][1]=0,b[3][2]=0,b[3][3]=-1,b[3][4]=1,b[3][5]=1;b[4][1]=0,b[4][2]=0,b[4][3]=0,b[4][4]=0,b[4][5]=1;b[5][1]=0,b[5][2]=0,b[5][3]=0,b[5][4]=0,b[5][5]=0;
}//目标
inline int read(){int x=0;bool f=0;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return f?-x:x;
}//读优
bool bound(int x,int y){if(x<=0||x>5||y<=0||y>5) return true;//越界return false;
}
bool dfs(int step,int sum,int x,int y,int la){//x、y是空格的位置,step是当前步数if(step+sum>mxd) return 0;//如果超过步数限制,直接返回0if(sum==0) return 1;//全部归位,返回1int qwqx,qwqy,p,temp;bool fl=0;for(int i=0;i<=7;++i){if(i==(7-la)) continue;//这里可以体现出顺序的讲究p=sum,qwqx=x+dx[i],qwqy=y+dy[i];if(bound(qwqx,qwqy)) continue;//判断是否越界/*这里仔细想一下还是能明白的*/if(map[qwqx][qwqy]==b[qwqx][qwqy]&&map[qwqx][qwqy]!=b[x][y]) p++;//原来骑士归位了,改完没归位if(map[qwqx][qwqy]!=b[qwqx][qwqy]&&map[qwqx][qwqy]==b[x][y]) p--;//原来骑士没归位,改完归位了if(b[x][y]==-1) p++;if(b[qwqx][qwqy]==-1) p--;//原来空位归位了,改完没归位、原来空位没归位,改完归位了temp=map[qwqx][qwqy],map[qwqx][qwqy]=map[x][y],map[x][y]=temp;//交换两个位置fl=dfs(step+1,p,qwqx,qwqy,i);//继续搜if(fl) return 1;temp=map[qwqx][qwqy],map[qwqx][qwqy]=map[x][y],map[x][y]=temp;//回溯}return 0;
}int main(){work();t=read();char c;while(t--){int x,y,mn=0;for(int i=1;i<=5;++i){for(int j=1;j<=5;++j){cin>>c;if(c=='*'){map[i][j]=-1;x=i,y=j;}if(c=='1') map[i][j]=1;if(c=='0') map[i][j]=0;if(map[i][j]!=b[i][j]) mn++;//mn最后为最少需要几步就可以归位。}}bool f=0;for(int i=mn;i<=16;++i){//枚举步数mxd=i;if(dfs(0,mn,x,y,-1)){f=1;printf("%d\n",i-1);break;}}if(!f) printf("-1\n");}return 0;
}

转载于:https://www.cnblogs.com/poi-bolg-poi/p/11136925.html

洛谷 P2324 [SCOI2005]骑士精神相关推荐

  1. 洛谷 P2324 [SCOI2005]骑士精神 解题报告

    P2324 [SCOI2005]骑士精神 题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,* ...

  2. 【题解】P2324[SCOI2005] 骑士精神

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

  3. P2324 [SCOI2005]骑士精神(IDA*)

    思路:不是动骑士,而是动空格.只能动15次,证明搜索树的高的确定的,考虑IDA解决 IDA能很好地解决一些搜索中有上界的情况 大概就是搞一个估值函数,然后当前情况+估价函数>限制的情况直接剪掉这 ...

  4. P2324 [SCOI2005]骑士精神(迭代加深搜索,dfs)

    传送门 文章目录 解析 解析 很显然,让马走的话状态记录和转移都会比较复杂 所以转化成让空位跳会更好做一点 但这不是重点 初看本题,其实第一感觉是bfs 但是状态数理论上最差可以达到815,(当然基本 ...

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

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

  6. 信息学奥赛一本通 1392:繁忙的都市(city) | 洛谷 P2330 [SCOI2005]繁忙的都市

    [题目链接] ybt 1392:繁忙的都市(city) 洛谷 P2330 [SCOI2005]繁忙的都市 [题目考点] 1. 图论 最小生成树 [解题思路] 将题目叙述转为图论概念,交叉路口为顶点,道 ...

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

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

  8. 洛谷 P2327 [SCOI2005]扫雷

    PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 P2327 [SCOI2005]扫雷 题目 题目描述 相信大家都玩过扫雷的游戏.那是在一个 n*m 的矩阵里面有一些雷,要你根据一些信 ...

  9. [T][3]洛谷 P2331 [SCOI2005] 最大子矩阵

    题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式: 第一行为n,m,k(1≤n≤100,1≤m≤2 ...

最新文章

  1. python正则匹配_Python正则表达式初识(五)
  2. Go基础系列:构建go程序
  3. 精选 GitHub 值得收藏的100个前端项目
  4. Apollo产品对比
  5. Cheetah 15K.7 ST3600057SS读写慢
  6. MSP430F5529 DriverLib 库函数学习笔记(五)定时器A
  7. 带你一文看懂--应用层、传输层的协议,HTTP协议及实现,UDP和TCP的报文格式以及为什么3次握手和4次挥手
  8. 脉位调制解调 matlab,基于matlab的am调制解调
  9. mockserver使用
  10. 创新工场 DeeCamp 2019 人工智能训练营启动报名,计划招收至少 600 名大学生...
  11. U盘被写保护?我来教你高级格式化
  12. 2020年南京社保减免优惠政策(2-12月汇总)
  13. Python 可视化如何配色?这个工具你值得拥有
  14. px4+ros+gazebo+ORB_SLAM2室内视觉无人机导航
  15. 1630 - FUNCTION XXXX.now does not exist. Check the 'Function Name Parsing and Resolution' section in
  16. VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿
  17. CSS字体颜色滚动渐变动画
  18. ConstraintLayout的流式布局
  19. geetest拼图破解
  20. flutter视频播放器

热门文章

  1. ubantu下面U盘无法识别
  2. JavaBean在jsp中的使用
  3. 【Java从0到架构师】SpringMVC - RESTful
  4. dao-service-servlet-jsp构建简易web通讯录(三层开发)软件安装
  5. 删库跑路如何预防?—— Oracle创建只读账号详细教程
  6. TB创建公式应用dll失败 请检查用户权限,终极解决方案
  7. fckeditor 图片上传 java_ckeditor用fckeditor的文件管理器实现图片上传
  8. oracle 自定义表类型赋值,Oracle自定义类型 Record + PL/SQL表
  9. lua mysql发包_如何发包
  10. linux孟庆昌第六章课后题_第六章 参数估计-矩估计:通过课后题理解矩估计