博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【2779】找朋友 sdutoj
阅读量:6929 次
发布时间:2019-06-27

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



找朋友

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

X,作为户外运动的忠实爱好者,总是不想呆在家里。现在,他想把死宅Y从家里拉出来。问从X的家到Y的家的最短时间是多少。
为了简化问题,我们把地图抽象为n*n的矩阵,行编号从上到下为1 到 n,列编号从左到右为1 到 n。矩阵中’X’表示X所在的初始坐标,’Y’表示Y的位置 , ’#’表示当前位置不能走,’ * ’表示当前位置可以通行。X每次只能向上下左右的相邻的 ’*’ 移动,每移动一次耗时1秒。

输入

多组输入。每组测试数据首先输入两个整数n,m(1<= n ,m<=15 )表示地图大小。接下来的n 行,每行n个字符。保证输入数据合法。

输出

若X可以到达Y的家,输出最少时间,否则输出 -1。

示例输入

3 3X#Y***#*#3 3X#Y*#*#*#

示例输出

4-1
 
 
方法一:
BFS
 
#include 
#include
#include
int n,m;struct node{    int x,y,ans;}q[250];char ma[16][16];//存放图的数组int vis[16][16];//标记访问过的点int mv[4][2]={
{1,0},{0,1},{-1,0},{0,-1}};//控制方向的数组void BFS(int x,int y){    struct node j,h;    j.x=x;    j.y=y;    j.ans=0;    int jin=0,chu=0;    q[jin++]=j;//让j进栈    vis[j.x][j.y]=1;//当前访问的点标记为1    while(chu
=0&&j.x
=0&&j.y
 
方法二:
 
DFS
 
#include 
#include
#include
const int INF = 1<<20;//定义一个大数struct node{    int x,y,ans;};char ma[16][16];int vis[16][16];int n,m,mi;int mv[4][2]={
{0,1},{1,0},{-1,0},{0,-1}};void DFS(int x,int y,int ans){    if(ans>=mi)    {        return;    }//结束递归调用,防止超时    if(ma[x][y]=='Y')    {        if(ans
=0&&f.y
=0&&f.x

转载于:https://www.cnblogs.com/jiangyongy/p/3971681.html

你可能感兴趣的文章
前端资源系列(5)-JavaScript奇味探索
查看>>
基于AngularJS的个推前端云组件探秘
查看>>
工行数据中心高级经理 李雁南:接口冒烟测试方法
查看>>
oh-my-zsh 精彩纷呈
查看>>
更靠谱的横竖屏检测方法
查看>>
git初始化操作以及一些问题的解决
查看>>
pcl常用小知识
查看>>
进军Docker 1.12,将代理与Swarm完美整合
查看>>
js中的立即执行函数
查看>>
多屏互动——H5 中级进阶
查看>>
1625行,解开 underscore.js 的面纱 - 第三章
查看>>
IOS-Swift开发基础——使用相机拍照
查看>>
magento 1 版本block、controller、model的重写
查看>>
关于CSS的position属性
查看>>
javascript 基本包装类型总结
查看>>
【安装PHP】如何在openSUSE42.1下编译安装PHP7
查看>>
[LintCode] First Position of Target
查看>>
H5 缓存机制浅析 - 移动端 Web 加载性能优化
查看>>
Node.js 11.12.0 发布,服务器端的 JavaScript 运行环境
查看>>
12月26日云栖精选夜读 | 必须掌握的30种SQL语句优化 ...
查看>>