链接:http://acm.ecnu.edu.cn/problem/3260/

题意:

给出一个x,y,k。求从左上角到(x,y)最短路径不少于k而且最快到达(x,y)的迷宫。(迷宫有多个 输出其中一个就行)

分析:

因为数据量很少,而且限时很宽,可以考虑dfs。限制是每个要走的格四个方向只能有一个走过的格,其实就是上一个走到这个格子的格,因为如果有多于一个相邻的格子,那么就会从另一个格子走到这格而不是从另一个格子走到上一个格子再走到这格,所以限制条件是成立的。

#include <bits/stdc++.h>
using namespace std;
int G[10][10];
int n,m,fx,fy,k ,maxx = 9999;
int dir[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
int ans[10][10];
void dfs(int x,int y,int step)
{ int cnt = 0,tx, ty;
for(int i = 0; i < 4; i++)
{
tx = x, ty = y;
tx += dir[i][0];
ty += dir[i][1];
if(tx < 1 || tx >n || ty<1 || ty > m)
continue;
if(G[tx][ty]) cnt++;
}
if(cnt > 1) return; if(x == fx && y == fy && step >= k)
{
if(step < maxx)
{
// printf("%d\n", step);
maxx = step;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
if(G[i][j]) ans[i][j] = '.';
else ans[i][j] = '*';
}
}
}
else return;
} for(int i = 0; i < 4; i++)
{
tx = x, ty = y;
tx += dir[i][0];
ty += dir[i][1];
if(tx < 1 || tx >n || ty<1 || ty > m || G[tx][ty])
continue;
G[tx][ty] = 1;
dfs(tx,ty,step+1);
G[tx][ty] = 0;
}
}
int main()
{
memset(G,0,sizeof(G));
scanf("%d %d", &n, &m);
scanf("%d %d %d", &fx, &fy, &k);
G[1][1] = 1;
dfs(1,1,0);
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
printf("%c",ans[i][j]);
}
printf("\n");
}
}

  

ECNU 3260 袋鼠妈妈找孩子(dfs)的更多相关文章

  1. ECNU 3260 - 袋鼠妈妈找孩子

    题目链接:http://acm.ecnu.edu.cn/problem/3260/ Time limit per test: 1.5 seconds Time limit all tests: 10. ...

  2. EOJ 3260 袋鼠妈妈找孩子

    暴力搜索. 主要目的就是找到任意一条路径,使得路径长度大于等于$k+1$,写个爆搜发现很快能出解.判断某点是否可走,需要看四周有没有已经走过的点的$dis$比这个点的$dis$小$2$或者$2$以上. ...

  3. zstu.4191: 无向图找环(dfs树 + 邻接表)

    4191: 无向图找环 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 117  Solved: 34 Description 给你一副无向图,每条边有 ...

  4. [automator篇][9] 列表,找孩子

    private boolean ClickByCollInfo(int CLICK, String classname, String id, String text) { UiSelector ui ...

  5. HDU 5877 Weak Pair (2016年大连网络赛 J dfs+反向思维)

    正难则反的思想还是不能灵活应用啊 题意:给你n个点,每个点有一个权值,接着是n-1有向条边形成一颗有根树,问你有多少对点的权值乘积小于等于给定的值k,其中这对点必须是孩子节点与祖先的关系 我们反向思考 ...

  6. 【NOI2019集训题2】 序列 后缀树+splay+dfs序

    题目大意:给你一个长度为$n$的序列$a_i$,还有一个数字$m$,有$q$次询问 每次给出一个$d$和$k$,问你对所有的$a_i$都在模$m$意义下加了$d$后,第$k$小的后缀的起点编号. 数据 ...

  7. bzoj 3551 kruskal重构树dfs序上的主席树

    强制在线 kruskal重构树,每两点间的最大边权即为其lca的点权. 倍增找,dfs序对应区间搞主席树 #include<cstdio> #include<cstring> ...

  8. 树链剖分&dfs序

    树上问题 很多处理区间的问题(像是RMQ,区间修改).可以用线段树,树状数组,ST表这些数据结构来维护.但是如果将这些问题挪到了树上,就不能直接用这些数据结构来处理了.这时就用到了dfs序和树链剖分. ...

  9. 51nod - 1420 - 数袋鼠好有趣 - 贪心 - 二分

    https://www.51nod.com/Challenge/Problem.html#!#problemId=1420 一开始乱搞了一发,每个袋鼠二分找最小的能放它的,然后二分的范围从下一个开始保 ...

随机推荐

  1. python_pdb断点调试常用命令

    Python pdb调试 在需要断点调试的地方,加上:import pdb;pdb.set_trace() h:打印当前版本pdb可用的命令,如果需要查询某个命令,可以输入 h [command]l: ...

  2. ROS学习笔记六:xxx.launch文件详解

    每当我们需要运行一个ROS节点或工具时,都需要打开一个新的终端运行一个命令.当系统中的节点数量不断增加时,每个节点一个终端的模式会变得非常麻烦.那么有没有一种方式可以一次性启动所有节点呢?答案当然是肯 ...

  3. 积分图像 分类: 图像处理 Matlab 2015-06-06 10:30 149人阅读 评论(0) 收藏

    积分图像(integral image)是一种快速计算矩形区域之和的数据结构,常利用它对算法进行加速.积分图像中处的值是原始灰度图像的左上角与当前点所围成的矩形区域内所有像素点的灰度值之和,即: 其中 ...

  4. Webform 内置对象(Response对象、Request对象,QueryString)

    Response对象:响应请求 Response.Write("<script>alert('添加成功!')</script>"); Response.Re ...

  5. 安装JPype时出现的 Unable to find vcvarsall.bat

    解决方案,在网上找到的,mark一下,亲测有效 C:/Python31/Lib/distutils目录下的msvc9compiler.py中 修改MSVCCompiler函数:vc_env = que ...

  6. 一段js实现复制文本内容到剪切板

    <script type="text/javascript"> function copyUrl2() { var Url2=document.getElementBy ...

  7. TNS-00511: 无监听程序

    这里到服务里面打开 tns 的监听服务

  8. Java语法基础-序列化

    33. Java序列化中如果有些字段不想进行序列化,怎么办? 答:对于不想进行序列化的变量,使用transient关键字修饰. transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序 ...

  9. Objective - c Foundation 框架详解2

    Objective - c  Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such ...

  10. rem手机端页面自适应完美解决方案(最新)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...