博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单回溯,最少步数
阅读量:6809 次
发布时间:2019-06-26

本文共 1279 字,大约阅读时间需要 4 分钟。

题目链接:

 

#include 
#include
#include
#define INF 0x3f3f3f3fusing namespace std;int MAPN[9][9]={ {
1,1,1,1,1,1,1,1,1}, {
1,0,0,1,0,0,1,0,1}, {
1,0,0,1,1,0,0,0,1}, {
1,0,1,0,1,1,0,1,1}, {
1,0,0,0,0,1,0,0,1}, {
1,1,0,1,0,1,0,0,1}, {
1,1,0,1,0,1,0,0,1}, {
1,1,0,1,0,0,0,0,1}, {
1,1,1,1,1,1,1,1,1},};int color[9][9];int mov[4][2]= {
{
1,0},{-1,0},{
0,1},{
0,-1}};int dfs(int sx,int sy,int x,int y){ int step=INF; if(sx==x&&sy==y) return 0; else { for(int k=0; k<4; k++) { int tx=sx+mov[k][0]; int ty=sy+mov[k][1]; if(tx>=0&&tx<=8&&ty>=0&&ty<=8) { if(!color[tx][ty]&&!MAPN[tx][ty]) { color[tx][ty]=1; step=min(step,dfs(tx,ty,x,y)+1); color[tx][ty]=0; } } } return step; }}int main(){ int sx,sy,x,y;///起始位置,目标位置。 int t; scanf("%d",&t); while(t--) { memset(color,0,sizeof(color)); scanf("%d%d%d%d",&sx,&sy,&x,&y); printf("%d\n",dfs(sx,sy,x,y)); } return 0;}

 

转载于:https://www.cnblogs.com/TreeDream/p/5316612.html

你可能感兴趣的文章
SQL 注入防御方法总结
查看>>
fiddler使用
查看>>
kqueue epoll 边界触发模式的网络编程模型
查看>>
每天一道算法题(16)——翻转链表
查看>>
my vim IDE 编辑器的配置
查看>>
Jenkins持续集成学习-搭建jenkins问题汇总
查看>>
Print 与Debug.Log的区别
查看>>
Servlet各种接口和类
查看>>
input光标高度问题
查看>>
基础命令集合
查看>>
ffmpeg-20160714-git-bin.7z
查看>>
ListView下拉刷新实现(类似陌陌的箭头转动)
查看>>
[Android编程心得] Camera(OpenCV)自动对焦和触摸对焦的实现
查看>>
Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)
查看>>
关于新建android项目时 appcompat_v7报错问题的一点总结
查看>>
基于数据库复制的技术架构讨论
查看>>
jQuery学习笔记(一)
查看>>
第一课 矩阵的行图像与列图像(麻省理工公开课:线性代数)【转载】
查看>>
Screen Orientation for Windows Phone
查看>>
程序1:四则运算
查看>>