题解报告:P1605 迷宫(dfs+回溯)

简介: 算法

地址

题意:

9.png

思路:dfs搜索路径,经过后就标机保证不回头,走不了的时候回到上层得取消此时的标机完成回溯。

#include<bits/stdc++.h>
using namespace std;
const int maxn=7;
int a[maxn][maxn];
bool flag[maxn][maxn];
int x1[6]={ 0,-1,1,0,0};
int y11[6]={0,0,0,1,-1};
int n,m,t,sx,sy,fx,fy;
int ans;
bool jg(int i,int j){
    if(j>=1&&j<=m&&i>=1&&i<=n&&flag[i][j]==0){
        return true;
    }
    return false;
}
void dfs(int i,int j){
    int x,y;
    if(i==fx&&j==fy){
        ans++;
        return ;
    }
    for(int d1=1;d1<=4;d1++){
        x=x1[d1]+i;
        y=y11[d1]+j;
        if(jg(x,y)){
            flag[x][y]=1;
            dfs(x,y);
            flag[x][y]=0;
        }
    }
}
int main()
{
    int x1,y1,i,j;
    cin>>n>>m>>t;
    cin>>sx>>sy>>fx>>fy;
    flag[sx][sy]=1;
    for(i=0;i<t;i++){
        cin>>x1>>y1;
        flag[x1][y1]=1;
    }
    dfs(sx,sy);
    cout<<ans<<endl;
}
相关文章
|
4月前
|
监控 JavaScript 开发工具
【HarmonyOS 5】鸿蒙中@State的原理详解
@State 是 HarmonyOS ArkTS 框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动 UI 的响应式编程模式。通过将变量标记为 @State,开发者可以确保当状态值发生变化时,依赖该状态的 UI 组件会自动重新渲染,从而保持数据与界面的实时同步。 @State 是 HarmonyOS ArkTS 实现响应式编程的大基础核心,可以说整个V1和V2都是围绕它来进行组合使用。
186 0
|
Java 数据库连接
【线程池使用完毕为何必须shutdown】
【线程池使用完毕为何必须shutdown】
391 0
|
存储 机器学习/深度学习 人工智能
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
|
存储 Java 数据库连接
SOLID设计原则:依赖倒置原则
本文介绍了依赖倒置原则,即高层模块不依赖低层模块,而是共同依赖抽象。直接依赖会导致紧耦合、难以测试和重用性差等问题。通过引入抽象层或独立抽象组件包,可以实现依赖倒置,提高系统灵活性和可维护性。Spring 和 Java SPI 是依赖倒置原则的典型应用。遵循该原则有助于设计更灵活、可扩展的系统架构。
209 3
|
API
JDK8函数式接口之Function
JDK8函数式接口之Function
377 0
|
测试技术 数据库
软件设计原则-依赖倒置原则讲解以及代码示例
依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计中的一个重要原则,由Robert C. Martin提出。 依赖倒置原则的核心思想是:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于具体实现细节,而具体实现细节应该依赖于抽象。这意味着我们在进行系统设计时,应该尽量使用抽象类或接口来定义对象之间的依赖关系,而不是直接依赖于具体的实现类
812 0
|
容器
每日一题——接雨水(单调栈)
每日一题——接雨水(单调栈)
java实现UDP数据传输
用java实现UDP数据传输;
|
设计模式 Java Android开发
跨进程单例 | Andorid进程通信AIDL原理及应用
设计模式中的单例模式在多进程场景下会演变成多例,存在线程安全问题。本文通过跨进程通信机制让多进程共享单例。
627 0