首页 > 编程语言 >(算法) 入门——<迷宫问题>

(算法) 入门——<迷宫问题>

时间:2024-03-30 23:30:19浏览次数:20  
标签:count arr 20 入门 int 迷宫 dfs ++ 算法

题目:

题解:

#include<stdio.h>
int w, h;
char arr[20][20];    //初始值数组
int t[20][20];  //判断是否被选择的数组
int dx[4] = { 0,0,-1,1 };
int dy[4] = { 1,-1,0,0 };
int count = 1;    //计数器
void dfs(int x, int y)
{
    for (int i = 0; i < 4; i++) //暴力穷举每一个位置的所有可能性
    {
        int a = x + dx[i], b = y + dy[i];   //测试位置
        if (a >= h || a < 0 || b >= w || b < 0 || arr[a][b] != '.' || t[a][b])  //行列限制,元素限制
        {
            continue;
        }
        t[a][b] = 1;    
        count++;
        dfs(a, b);
    }
}
int main()
{
    scanf("%d %d", &w, &h);
    for (int i = 0; i < h; i++) //初始化数据
    {
        scanf("%s", arr[i]);
    }
    for (int i = 0; i < h; i++) //寻找初始点
    {
        for (int j = 0; j < w; j++)
        {
            if (arr[i][j] == '@')
                dfs(i, j);
        }
    }
    printf("%d", count);
    return 0;
}

标签:count,arr,20,入门,int,迷宫,dfs,++,算法
From: https://blog.csdn.net/2301_79580018/article/details/137156189

相关文章

  • shell入门
    一、shell、shell脚本介绍1、shell是命令,类似于windows的dos命令2、shell脚本是根据shell命令或程序编写语言编写的shell文件,也叫shell程序二、Shell解析器1、查看linux系统centos支持的解析器命令:cat/etc/shellsps:centos默认的解析器是bash2、查看打印输出当前......
  • 代码随想录算法训练营第8天 | 字符串
    344反转字符串voidreverseString(vector<char>&s){chartmp; inti=0,j=s.size()-1; while(i<j) { tmp=s[i]; s[i]=s[j]; s[j]=tmp; i++;j--; }}swap库函数的实现:位运算法——按位异或s[i]^=s[j];s[j]^=s[i];s[i]^=s[j];54......
  • 【图论】3.30学习记录 k短路(A*算法)
    从最短路说起的k短路3.26看了最短路和次短路。我们发现次短路实际上就是把最短路给破坏掉然后跑最短路...那我想...是不是破坏(k-1)次就能得到k短路呢,很显然是的,但是复杂度比较高,(因为一次dij是O(nlogn)级别的,次短路的话最坏要跑m次当最短路有m条边的时候)那么k比较大的时候就......
  • Java 递归算法系列:建议收藏的 13 个经典问题的代码实现详解
    递归算法题求阶乘(Factorial)斐波那契数列(FibonacciSequence)汉诺塔(TowerofHanoi)遍历树节点(TreeTraversal)数组反转(ArrayReversal)爬楼梯问题(ClimbingStairsProblem)回文数检测(PalindromeChecking)找出数组中的最大值(FindingMaximumValueinanArray)分治算法......
  • Leetcode算法训练日记 | day11
    一、有效的括号1.题目Leetcode:第20题给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。3.每个右括号都有一个对应的相同类型的左括号。示例1:输入:s="()"......
  • Leetcode算法训练日记 | day10
    一、用栈实现队列1.题目Leetcode:第232题请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素......
  • KMP算法
    一.概述要解决的问题:字符串匹配问题。目标串target:"aabaabaafa"模式串pattern:"aabaaf"传统算法:双层for循环遍历目标串target和模式串pattern,判断pattern在target第一次出现的位置。时间复杂度为:\(O(pattern.size()*target.size())\)=\(O(m*n)\)KMP算法核心思路:在对目标......
  • 一维差分算法
    目录背景:一维插分应用场景一维差分法原理解释背景:在刷javaA组蓝桥本真题时,碰到了一个用二维差分方法的解题思路,意识到自己差分不熟悉,就想先学习一下一维差分。一维插分应用场景题目给出一个一维数组,并多次修改某一区间的值。例如:一个数组长度为8,初始均为0,输入数......
  • 毕业设计:基于深度学习的电影推荐算法 -- 以豆瓣为例 大数据
    目录前言设计思路一、课题背景与意义二、算法理论原理2.1GRU网络模型2.2语言模型2.3推荐算法三、检测的实现3.1数据集3.2实验环境搭建3.3实验及结果分析最后前言    ......
  • Rust简易入门(四)
    错误处理之:Result、Option以及panic!宏Rust中的错误可以分为两种Recoverableerror:有返回类型返回Result类型返回Option类型Unrecoverabletype:没有返回类型,直接崩溃panicmacro将终止当前线程Result是一个枚举类型,有两个变体:Ok和Err。它通常用于表示函数的执行结......