#include<cstdio>
#include<queue>
using namespace std;
struct sss
{
int x,y;
}ans[][];
int map[][];
int flag[][];
int dec[][]={,,,,-,,,-};
void print(struct sss q)
{
if(q.x==&&q.y==)
{
printf("(0, 0)\n");
return;
}
else
{
print(ans[q.x][q.y]);
printf("(%d, %d)\n",q.x,q.y);
}
}
void bfs(int x,int y)
{
struct sss q;
queue<struct sss> s;
flag[][]=;
q.x=x;
q.y=y;
s.push(q);
ans[][].x=-;
ans[][].y=-;
while(!s.empty())
{
q=s.front();
s.pop();
if(q.x==&&q.y==)
{
print(q);
return;
}
for(int i=;i<;i++)
{
int xx=dec[i][]+q.x;
int yy=dec[i][]+q.y;
if(xx>=&&xx<&&yy>=&&yy<&&flag[xx][yy]==&&map[xx][yy]==)
{
struct sss w;
w.x=xx;
w.y=yy;
s.push(w);
flag[xx][yy]=;
ans[xx][yy].x=q.x;
ans[xx][yy].y=q.y;
}
}
}
}
int main()
{
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
scanf("%d",&map[i][j]);
}
}
bfs(,);
}
#include<cstdio>
#include<cmath>
#include<vector>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#include<string>
using namespace std;
typedef long long ll;
char mp[][];
int n,m,k;
int flag;
int d[][];
char jg[];
char yx[];
int dis[][]={,,,-,,,-,};
char str[]={"DLRU"};
void pan(int x,int y){
//printf("k=%d\n",k);
int tmp=k;
for(int i=;i<k;i++){
int dex=-;
for(int j=;j<;j++){
pair<int,int> z;
z.first=x+dis[j][];
z.second=y+dis[j][];
if(z.first>=&&z.first<n&&z.second>=&&z.second<m&&mp[z.first][z.second]!='*'&&d[z.first][z.second]<tmp){
dex=j;
break;
}
}
tmp--;
x=x+dis[dex][];
y=y+dis[dex][];
jg[i]=str[dex];
}
jg[k]='\0';
printf("%s\n",jg);
}
void bfs(int x,int y)
{
queue<pair<int,int> > q;
q.push(make_pair(x,y));
for(int i=;i<;i++){
for(int j=;j<;j++)
d[i][j]=;
}
int num=;
d[x][y]=;
while(!q.empty()){
pair<int,int> w=q.front();
q.pop();
num++;
for(int i=;i<;i++){
pair<int,int> z;
z.first=w.first+dis[i][];
z.second=w.second+dis[i][];
if(z.first>=&&z.first<n&&z.second>=&&z.second<m&&mp[z.first][z.second]=='.'){
if(d[z.first][z.second]>d[w.first][w.second]+){
d[z.first][z.second]=d[w.first][w.second]+;
q.push(z);
}
}
}
}
/*for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(d[i][j]==10000000) printf("%4d",-1);
else printf("%4d",d[i][j]);
}
printf("\n");
}*/
// printf("num=%d\n",num);
if(num==) printf("IMPOSSIBLE");
else pan(x,y);
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<n;i++){
scanf("%s",mp[i]);
}
if(k%){
printf("IMPOSSIBLE");
return ;
}
int vis=;
for(int i=;i<n;i++){
for(int j=;j<m;j++)
{
if(mp[i][j]=='X')
{
mp[i][j]='.';
bfs(i,j);
vis=;
break;
}
}
if(vis) break;
}
}

bfs两种记录路径方法的更多相关文章

  1. GET和POST两种基本请求方法(转自博主--在途中#)

    GET和POST两种基本请求方法的区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过req ...

  2. 转:GET和POST两种基本请求方法的区别

    原文地址:GET和POST两种基本请求方法的区别 原文如下: GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL ...

  3. 表格细边框的两种CSS实现方法

    在网页制作中,细边框这个制作方法是必不可少的.这里介绍2种常见的表格细边框制作方法,均通过XHTML验证. <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  4. 两种HTTP请求方法:GET和POST的区别

    之前在一些开发者平台使用网页调用API时,一再提到两种请求方法GET和POST,所以就去了解了下.那么这又不得不提到HTTP了! 一.什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户 ...

  5. 修改linux 两种时间的方法

    1,整理了一下怎么修改linux 两种时间的方法. 硬件时间:hwclock 或者clock,设置的方法是 hwclock --set --date="05/12/2018 12:30:50 ...

  6. mstsc远程报:这可能是由于CredSSP 加密Oracle修正的两种完美解决方法

    win10很完美,用的也很舒服!当然人无完人,也总有不尽如人意的时候.比如说我们经常用的远程mstsc,就出现了一个坑,既然出现坑了,我们就得把坑解决掉吧!下面就记录一下这个坑的解决方法. 本文地址: ...

  7. GET和POST两种基本请求方法的区别

    文章来源:http://www.cnblogs.com/logsharing/p/8448446.html GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一 ...

  8. 迷宫问题 (bfs广度优先搜索记录路径)

    问题描述: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...

  9. GET和POST两种基本请求方法的区别(转)

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

随机推荐

  1. 零基础快速入门web学习路线(含视频教程)

    下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...

  2. Python 用户交互程序Input

    1.用户交互,用户输入 用户输出命令是input. 设置一个变量并输出. name = input("name:") print(name) 注:python2 下 raw_inp ...

  3. 复旦大学2017--2018学年第一学期高等代数I期末考试情况分析

    一.期末考试成绩班级前十名 郭宇城(100).魏一鸣(93).乔嘉玮(92).刘宇其(90).朱柏青(90).王成文健(90).方博越(88).熊子恺(88).张君格(88).崔镇涛(87).史书珣( ...

  4. 微信小程序wepy开发,$apply()不能更新页面数据的情况

    例如userinfo信息获取到后,$apply()更新后还是没有在页面中显示数据 已发现的原因: 当data中没有定义userinfo时,会发生这样的问题

  5. SAP SD-销售模式-寄售(客户寄售)

    SAP SD-销售模式-寄售(客户寄售) http://blog.sina.com.cn/s/blog_a440b7ee01014kgq.html  http://www.doc88.com/p-23 ...

  6. CSS自定义样式

    CSS自定义样式 1. 自定义字体 先将字体文件放到web服务器上,需要时自动下载到用户计算机上 属性:@font-face 例: @font-face{ font-family:myFont; sr ...

  7. 力扣(LeetCode)605. 种花问题

    假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花 ...

  8. SpringMVC使用Swagger

    Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服 ...

  9. 基于Python——实现两个文件夹中的文件拷贝

    [背景]当复制一个文件夹中的某文件到另一个文件夹中时是一件很容易的事情,可是如果存在很多文件夹中的文件需要一一拷贝,就会变的很繁琐,稍有不慎就会遗漏,今天就用Python来解决这个问题—— [代码实现 ...

  10. 『TensorFlow』线程控制器类&变量作用域

    线程控制器类 线程控制器原理: 监视tensorflow所有后台线程,有异常出现(主要是越界,资源循环完了)时,其should_stop方法就会返回True,而它的request_stop方法则用于要 ...