很直接的dfs。递归+栈——不知道以后会不会生疏

进入一次dfs,相当于走一步,入栈;结束一次dfs,相当于这一步考虑结束,出栈

笑死,y1竟然是一个函数

突然发现写的有点槽,可以把dfs形式化为“走一格”,map的填充可以放在dfs的首尾,而不用在每个if里写一遍。有空再改一下。

题目描述

输入一个n*m的01矩阵作为01迷宫,并给定他的起点与终点,求出他不同逃跑路线的数目(不同逃跑路线中可以有相同的部分,但是不能完全相同)。

输入格式

前两行输入两个整数n和m(n、m均为正整数并且小于等于7),分别代表01矩阵行数和列数。接下来的n*m行,每行输入1个整数(0或1),对应着01矩阵各个元素值(按行输入)。接下来的四行分别代表迷宫的起点和终点,每行一个整数,分别代表起点与终点行数和列数。

输出格式

输出每种走法的路径。最终输出一个整数,代表逃跑路线的数目。

#include<stdio.h>
#include<string.h> int N,M;
int map[8][8];
int x1,y1,x2,y2;
int cnt = 0;
char stack[100][30];
int top = -1; int isAble(int x, int y){ return 0<=x && x<N && 0<=y && y<M && map[x][y]==0; } void dfs(int x,int y){
char tmp[30];
sprintf(tmp,"(%d,%d)",x,y);
top++; strcpy(stack[top],tmp); if(x == x2 && y == y2){
cnt++; for(int i=0;i<=top;++i) {
printf("%s",stack[i]);
}puts(""); stack[top--];
return;
}
if(isAble(x+1, y)) {
map[x+1][y] = 1;
dfs(x+1, y);
map[x+1][y] = 0;
}
if(isAble(x-1, y)){
map[x-1][y] = 1;
dfs(x-1, y);
map[x-1][y] = 0;
}
if(isAble(x, y+1)){
map[x][y+1] = 1;
dfs(x, y+1);
map[x][y+1] = 0;
}
if(isAble(x, y-1)){
map[x][y-1] = 1;
dfs(x, y-1);
map[x][y-1] = 0;
} stack[top--];
return;
} int main(){
scanf("%d%d",&N,&M);
for(int i=0;i<N;++i) for(int j=0;j<M;++j)
scanf("%d",&map[i][j]);
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
x1 = x1 - 1; x2 = x2 - 1;
y1 = y1 - 1; y2 = y2 - 1; dfs(x1,y1);
printf("%d",cnt);
return 0 ;
}

【练习回顾】dfs迷宫+路径打印的更多相关文章

  1. POJ 3984 迷宫问题(简单bfs+路径打印)

    传送门: http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  2. Minimum Transport Cost HDU1385(路径打印)

    最短路的路径打印问题 同时路径要是最小字典序 字典序用floyd方便很多 学会了两种打印路径的方法!!! #include <stdio.h> #include <string.h& ...

  3. ZOJ 1076 Gene Assembly(LIS+路径打印 贪心)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=76 题目大意:在一个DNA上,给定许多基因的起始位置和结束位置,求出这 ...

  4. 哈密顿绕行世界问题(dfs+记录路径)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2181 哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) ...

  5. L2-001 紧急救援 (25 分) (最短路+路径打印)

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840 题目: 作为一个城市的应急救援队伍的负 ...

  6. BFS和DFS记录路径

    DFS记录路径的意义好像不大,因为不一定是最短的,但是实现起来却很简单. #include<math.h> #include<stdio.h> #include<queu ...

  7. 代码实现:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名

    package com.loaderman.test; import java.io.File; import java.io.FileReader; import java.util.Scanner ...

  8. DFS迷宫递归所有路径 新手入门

    这篇文章写给自己以后复习和个个入门朋友:提示同学们一定耐心看完解释 哪怕看得很难受,我是新手我懂大家的心烦.看完后慢慢体会代码 我们假设迷宫为如下状况:         {0,0,1,0}       ...

  9. [poj]2488 A Knight's Journey dfs+路径打印

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 45941   Accepted: 15637 Description Bac ...

  10. 九度OJ 1090:路径打印 (树、DFS)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1704 解决:314 题目描述: 给你一串路径,譬如: a\b\c a\d\e b\cst d\ 你把这些路径中蕴含的目录结构给画出来,子目 ...

随机推荐

  1. 部署SkyWalking

    SkyWalking部署说明 二进制包部署 1.下载地址 https://dlcdn.apache.org/skywalking/9.4.0/apache-skywalking-apm-9.4.0.t ...

  2. Qt编写4K/8K大分辨率播放器(8K占用1%CPU)

    一.前言 在经过多种内核的洗礼以后,逐渐对不同内核的不同音视频文件和视频流进行大量的对比测试,比如测试对各种格式的支持性,对各种网络流的支持程度,在同一个地址下占用的CPU/GPU资源比对,最终发现播 ...

  3. 15条 Karpenter 最佳实践,轻松掌握弹性伸缩

    Karpenter 是一款高性能.灵活的开源 Kubernetes 集群自动扩展工具,目前已支持 AWS 和阿里云.它可以根据不断变化的应用负载,快速启动大小合适的计算资源,进而提升应用的可用性. 相 ...

  4. Uniapp 获取当前版本号

    plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) { oldversion = wgtinfo.versionCode // ...

  5. 🤺Universal and Transferable Adversarial Attacks on😊Aligned Language Models

  6. 第七章 LinkedBlockingQueue源码解析

    1.对于LinkedBlockingQueue需要掌握以下几点 创建 入队(添加元素) 出队(删除元素) 2.创建 Node节点内部类与LinkedBlockingQueue的一些属性 static ...

  7. 史上最强Dubbo面试28题答案详解

    1.Dubbo是什么? Dubbo 是一个分布式.高性能.透明化的 RPC 服务框架,提供服务自动注册.自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成. RPC 指的是远程调用协议, ...

  8. w3cschool-XML教程

    参考https://www.w3cschool.cn/xml/ XML 教程 让我们先来简单的了解一下 XML: XML 指可扩展标记语言(eXtensible Markup Language). X ...

  9. 系统提示msvcp120.dll丢失如何解决

    最近有位win7系统用户反映,自己安装完游戏开始玩的时候,系统却提示:示msvcp120.dll丢失,这导致了游戏无法正常运行,这让用户很是苦恼,不知道电脑如何解决,为此非常苦恼,那么win7系统提示 ...

  10. Groove Intermediate pg walkthrough

    80端口web站点 dirsearch 没发现啥有用信息 感觉就是让我们突破登录框进后台的 https://github.com/ChurchCRM/CRM/issues/137 上网查到默认密码 登 ...