链接: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. Luogu P3619 魔法 【贪心/微扰证明】

    题目描述 cjwssb知道是误会之后,跟你道了歉.你为了逗笑他,准备和他一起开始魔法.不过你的时间不多了,但是更惨的是你还需要完成n个魔法任务.假设你当前的时间为T,每个任务需要有一定的限制ti表示只 ...

  2. Canvas 入门案例

    五.  Canvas 入门案例 1.  canvas 圆形绘制 <!DOCTYPE html> <html lang="en"> <head> ...

  3. Golang 入门 : 理解并发与并行

    Golang 的语法和运行时直接内置了对并发的支持.Golang 里的并发指的是能让某个函数独立于其他函数运行的能力.当一个函数创建为 goroutine 时,Golang 会将其视为一个独立的工作单 ...

  4. 给Ambari集群里安装可视化分析利器工具Hue步骤(图文详解)

    扩展博客 以下,是我在手动的CDH版本平台下,安装Hue. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz) ...

  5. Go 使用自定义包(package)

    自定义包的分为两种: 1.同目录下的包: 2.不同目录下的包: *经测试,同目录下是不可以用不同包的文件的 同目录下的包: 不同文件中的变量和函数都可以直接访问 不同目录下的包: 1.把要在自定义包外 ...

  6. python爬虫BeautifulSoup库class_

    因为class是python的关键字,所以在写过滤的时候,应该是这样写: r = requests.get(web_url, headers=headers) # 向目标url地址发送get请求,返回 ...

  7. poj 3253 Fence Repair (水哈夫曼树)

    题目链接: http://poj.org/problem?id=3253 题目大意: 有一根木棍,需要截成n节,每节都有固定的长度,一根长度为x的木棒结成两段,需要花费为x,问截成需要的状态需要最小的 ...

  8. dalvik.system.VMRuntime 隐藏api的迷惑

    [Android UI界面]关于dalvik.system.VMRuntime 的 使用迷惑 我也遇到了相同问题.不知楼主现在解决了没有? 回答1: [Android UI界面]关于dalvik.sy ...

  9. centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL

    一.安装环境 操作系统 Windows7 Enterprise 64位 需要用到的软件 JDK:jdk-8u60-linux-x64.rpm Glassfish: Glassfish4.1.1.zip ...

  10. Spring @Resource、@Autowired、@Qualifier区别

    @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入: @Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualif ...