NYoj最少步数(DFS)
来源:互联网 发布:淘宝店铺注销流程 编辑:程序博客网 时间:2024/04/29 17:54
这有一个迷宫,有0~8行和0~8列:
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
0表示道路,1表示墙。
现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)
输入
第一行输入一个整数n(0<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。
输出
输出最少走几步。
样例输入
2
3 1 5 7
3 1 6 7
样例输出
12
11
思路:DFS,对表进行深搜,给你初始位置还有结束位置,直接查找就行,注意这道题最好不要用vis保存路径,直接对map改改成墙就行,每一个DFS后要还原路径map=0.
代码:
#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#define MAXN 10000using namespace std;int map[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 mi;int x1,y1,x2,y2;void dfs(int x1,int y1,int ans){if(map[x1][y1])return ;ans++;if(x1==x2&&y1==y2){if(ans<mi)mi=ans;return ;}map[x1][y1]=1;dfs(x1,y1+1,ans);dfs(x1,y1-1,ans);dfs(x1+1,y1,ans);dfs(x1-1,y1,ans);map[x1][y1]=0;}int main(){int t;scanf("%d",&t);while(t--){scanf("%d %d %d %d",&x1,&y1,&x2,&y2);int ans=0;mi=MAXN;dfs(x1,y1,ans);printf("%d\n",mi-1);}}
0 0
- nyoj-58 最少步数(DFS)
- NYOJ 58 最少步数(dfs)
- NYOJ 58 最少步数 (DFS)
- NYoj最少步数(DFS)
- nyoj 最少步数(BFS,DFS)
- NYOJ 题目58 最少步数(dfs)
- nyoj 58 最少步数(深搜dfs)
- NYOJ 58 最少步数(深搜DFS)
- 【NYOJ】-最少步数(DFS || BFS&&队列)
- DFS && BFS 最少步数(nyoj 58)
- NYOJ-58 最少步数 DFS
- NYOJ 58 最少步数 【DFS】
- NYOJ 58--最少步数【DFS】
- NYOJ 58 最少步数(DFS)
- NYOJ 58-最少步数【DFS】
- NYOJ 58-最少步数【DFS&&BFS】
- nyoj-题目58-最少步数【DFS】
- NYOJ-58-最少步数[DFS]
- 利用MFC的Picture控件归一大小显示图像
- SQLSERVER链接到ORACLE失败,错误7302
- 【NOIP2008普及组】排座椅
- 关于java异常机制的细节
- 自动化前与自动化后(关于KPI轻谈)
- NYoj最少步数(DFS)
- SEO快速排名算法独家揭秘
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
- 基础总结篇之一:Activity生命周期
- apache 反向代理
- 【1】【状压DP】LightOJ 1068 Investigation
- sdut oj2178 链表的有序集合
- ubuntu下最全的软件安装、卸载、查看命令
- 回调函数