leetCodeP695

news/2024/7/20 22:47:32 标签: 深度优先, 蓝桥杯, 算法

再一次认识dfs

做这个题目我经历了,数组越界,xy轴搞反,以及最后计数面积。

不过这都最后一一解决啦。先上代码:


int hen[4]={0,0,1,-1};
int shu[4]={1,-1,0,0}; 
int n,m;
int dfs(int x,int y,int** grid )
{
    if(x<0||y<0||x>=n||y>=m||grid[x][y]!=1)
    {
        return 0;
    }
    int count=1;
    grid[x][y]=0;
    for(int i=0;i<4;i++)
    {
        
        int dx=x+hen[i];
        int dy=y+shu[i];
            
        count+=dfs(dx,dy,grid);
    }

    return count;
    

}
int maxAreaOfIsland(int** grid, int gridSize, int* gridColSize){
    n=gridSize;
    m=gridColSize[0];
    int grids;
    int maxgid=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(grid[i][j]!=0)
            {
                 grids=dfs(i,j,grid);
                maxgid=maxgid>grids?maxgid:grids;
            }
        }
    }
    return maxgid;
}

其实数组越界和xy轴搞反是有一定原因的,刚开始越界是因为我没考虑到,上窜下窜的会窜出边界,考虑到了呢,我又脑子不灵光,把xy轴搞反了,继续有着数组越界让我很抓狂。

最后是计数面积了。其实递归里的计数我一直搞不懂,总喜欢搞宏定义的参数来计数。然后我的宏定义又忘了,每一次递归都是有返回值的.....

累加是将上一次的返回值累加起来,所以终于理解递归的计数了芜湖


http://www.niftyadmin.cn/n/753677.html

相关文章

前言

本人Peter0701,坐标湖南CJ,高一蒟蒻 心非常宽,但是体不胖,从不在意jfca(当然,安全意识还不错,没被jc过) 自NOIP2018后洗心革面(当然没用) 在淘汰的边缘挣扎,即将退役,说不定哪天就停更了呢…… 总ji,且行且珍惜啦! 欢迎各位巨佬来坐坐! luogu:U108560 Peter0701 vjudge:Peter(#…

nginx rtmp直播无延迟_只用285秒完成Nginx 直播服务部署(直播 + 分流 + 画面水印)...

最近帮朋友的公司部署了一套分流水印的直播系统顺手打包成docker镜像&#xff0c;方便大家需要用到的时候开箱即用&#xff0c;不需要百度一些零碎的文章 也可做简单的直播服务&#xff0c;只需调整配置文件便可达到你的需求.需求&#xff1a;将直播流分流到两个云厂商的直播云…

python循环代码优化技巧_Python 代码优化技巧(一)

代码优化Part1分享最近看到的关于代码优化的一些技巧。if 判断的短路特性对于and&#xff0c;应该把满足条件少的放在前面&#xff0c;这样当对于大量判断时&#xff0c; 满足条件少的情况直接回导致其后其他表达式不会计算从而节约时间(因为 False and True 还是 False)import…

【链表】实现单链表的逆序

1 public class Main {2 3 // 就地逆序法4 public Node reverse(Node head) {5 // no need to reverse6 if (head null || head.next null || head.next.next null) {7 return head;8 }9 10 // pointer 11 No…

js添加css样式_JavaScript 和 CSS 交互原来有5种的方法!

英文 | https://davidwalsh.name/ways-css-javascript-interact译文 | https://www.webhek.com/post/ways-css-javascript-interact.html随着浏览器不断的升级改进&#xff0c;CSS和JavaScript之间的界限越来越模糊。本来它们是负责着完全不同的功能&#xff0c;但最终&#xf…

【以太坊开发】区块链中的预言机:Oraclize原理介绍

智能合约的作用很多&#xff0c;但是很多数据还是要基于互联网&#xff0c;那么如何在合约中获取互联网中的数据&#xff1f;Oraclize就是为了这个目的而诞生的。 工作原理&#xff1a; 智能合约通过对Oraclize发布一个合约之间的调用请求来获取数据&#xff0c;指定数据源和参…

python使用自制程序_在OS X上使用Python与自制程序

我已经使用Mac python一段时间了,我决定自学matplotlib,因为我想拥有一些常见模块的经验.我听到大家说,一旦你进入非标准模块,最好使用python threw homebrew,所以你可以访问pip而不是easy_install.运行后&#xff1a;$brew install python –with-brewed-openssl,$brew instal…

BZOJ4950 Wf2017Mission Improbable(二分图匹配)

先给每个非零格子-1以满足俯视图不变。于是就相当于要求每行每列最大值不变。能减少剩余箱子的唯一方法是在要求相同的行列的交叉处放箱子以同时满足两个需求。给这些行列连边跑二分图匹配即可。注意必须格子初始时有箱子才能放在这。 #include<iostream> #include<c…