首页 > 其他分享 >TZOJ 6948: 走迷宫/深搜模板

TZOJ 6948: 走迷宫/深搜模板

时间:2022-10-06 10:11:23浏览次数:48  
标签:10 tx ty int 迷宫 dfs 6948 TZOJ 模板

描述

 

有一个迷宫,图案如图5.2.6所示,红色区域表示不能通行,蓝色区域表示能通行,在迷宫中通行的方向是上下左右四个方向。

image.png

从入口(1,1)位置进入迷宫,编程判断能否从出口位置成功走出。

迷宫图案中的通行区域用数字表示:1是可以通行的点,0是不能通行的点。

 

 

输入

 

 

输入为一10*10的01图像。

 

 

输出

 

 

如果能走出请输出"successful!",否则输出"fail!"。

 

 

样例输入

 

0000000000
0110111010
0110111010
0111100110
0100011110
0111011110
0101110110
0100010010
0011111110
0000000000

样例输出

successful!  
#include<bits/stdc++.h>
using namespace std;
//nex在原位置的基础上行列坐标的变换需要增减的量 
int nex[4][2] = {{0,1},{1,0},{0,-1},{-1,0}}; //方向数组右、下、左、上 行列坐标
char a[15][15]; //地图 \0
int vis[15][15]; //标记数组 0
int f; //f一般作为是否到达终点的标记 0
void dfs(int x,int y); //声明一个返回空类型的函数dfs 
int main()
{
    //1.输入地图
    for(int i=1;i<=10;i++) //行数是1-10,最小行数1
        for(int j=1;j<=10;j++) // 最小点位是(1,1),最大点位是(10,10)
        {
            cin>>a[i][j]; //输入第i行的第j个点 
        } 
    //2.dfs()开搜
    dfs(2,2); //将起点(1,1)传入
    //3.判断f
    if(f==1) cout<<"successful!";
    else cout<<"fail!";
    return 0;
}
void dfs(int x,int y)
{
    if(f==1)return; //如果f已经为1证明已经寻找到了终点,直接返回程序 
    if(x==9&&y==9)
    {
        f = 1; //f=1证明找到结果
        return; //结束dfs程序 
    }
    for(int i=0;i<4;i++) //循环方向数组vis
    {
        int tx = x + nex[i][0]; //下一步的行坐标tx
        int ty = y + nex[i][1]; //下一步的列坐标ty
        if(tx<1||tx>10||ty<1||ty>10)continue; //最小点位是(1,1),最大点位是(10,10)
        if(a[tx][ty]=='1' && vis[tx][ty]==0)//在地图上可行且没有走过/标记过的点
        {
            vis[tx][ty] = 1; //标记(tx,ty)走过
            dfs(tx,ty); //递归将下一步(tx,ty)作为起点传入dfs中 
        } 
    } 
} 

 

标签:10,tx,ty,int,迷宫,dfs,6948,TZOJ,模板
From: https://www.cnblogs.com/jyssh/p/16757097.html

相关文章

  • C++ 泛型(模板与容器)
    文章目录​​一、泛型的基本思想:​​​​函数模板的性质​​​​C++模版函数/类的语法​​​​类模板的性质​​​​二、C++STL简介​​​​2.1算法(algorithm)​​​​2.......
  • 高级vue 模板中 ref 的使用用法
    ref+普通dom标签 获取真实dom对象ref+组件标签 获取组件实例对象 <template>  <h1ref="h1Ref">www.96net.com.cn</h1>  <ref-comoonentref="co......
  • 字符串哈希 模板 例题
    字符串哈希可以快速判断两个子字符串是否相等原理:https://www.cnblogs.com/ydUESTC/p/15722400.html注意字符串哈希时后面的字符视为低位,这样方便取一段字符的哈希时先......
  • 异或方程组高斯消元模板
    inlinevoidsolve(intn){for(inti=1,top=1;i<=n;i++,top++){intcur=0;for(intj=top;j<=n;j++)if(m......
  • 读boost::multi_array有感,多维数组实现(非类型模板,偏特化)
    开发环境:VS2002(VC7)本文做如下简化:1,假定所有维元素都是5。2,不考虑const的[]。3,由于只是熟悉原理,不考虑各种异常情况。问题一,请实现一个一维整形数组,只需重载[]。问......
  • Prism 模板使用
    一、打开VisualStudio2022工具,选择“扩展”中的“扩展管理”菜单。如下图:二、在“扩展管理”界面中,搜索“PrismTemplatePack”并下载安装。如下图:三、重新打开Visu......
  • 事件相机特征跟踪-模板跟踪方法
    ​1、前言由于事件相机不能提供完整的图像,所以最初的特征跟踪依赖传统相机的数据。本推送介绍事件相机特征检测与跟踪的一篇较早的工作:FeatureDetectionandTrackingwith......
  • 【luogu P5906】【模板】回滚莫队&不删除莫队
    【模板】回滚莫队&不删除莫队题目链接:luoguP5906题目大意给你一个序列,多次询问每次问一个区间,求里面相同的数的最远间隔距离。思路考虑莫队,发现加入一个点好处理,但是......
  • [模板]zkw线段树
    讲解在这里[还有一个](https://wenku.baidu.com/view/f27db60ee87101f69e319544.html)A.数列操作单点修改,区间查询code//正青春的年华,就是应该献给直指星辰的梦想啊!......
  • TZOJ 2674: 一个人的旅行 最短路/Floyd
    描述虽然草儿是个路痴(就是在tzc待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看......