栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

dfs学习-----迷宫问题2369

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

dfs学习-----迷宫问题2369

1 dfs是深度优先遍历,从一个点从头找到尾,知道找到题目所要求的数目或者无法搜索是会回溯

回溯过后继续寻找,直至找到所有的方案;

2 要根据提议选择是否进行回溯;有的题目是寻找所有能够到达点的个数是不用回溯;

例题

题目描述

给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。

输入

第一行N、M和T,N为行,M为列,T为障碍总数。第二行起点坐标SX,SY,终点坐标FX,FY。接下来T行,每行为障碍点的坐标。

输出

给定起点坐标和终点坐标,问每个方格最多经过1次,从起点坐标到终点坐标的方案总数。

样例输入
2 2 1
1 1 2 2
1 2
样例输出
#include
using namespace std;
int a[101][101];
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};
int x1,x2,y3,y2,s,n,m;
void dfs(int x,int y){
    if(x==x2-1&&y==y2-1)s++;
    for(int i=0;i<4;i++){
        int xx=x+dx[i];
        int yy=y+dy[i];
        if(xx>=0&&xx=0&&y>n>>m>>t;
    scanf("%d%d%d%d",&x1,&y3,&x2,&y2);
    while(t--){
        int q,w;cin>>q>>w;
        a[q-1][w-1]=1;
    }
    dfs(x1-1,y3-1);
    printf("%d",s);
}
1
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769556.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号