代码随想录60期day54

news2025/6/5 16:51:23

岛屿dfs

#include<iostream>
#include<vector>
using namespace std;

int dir[4][2] = {0,1,1,0,-1,0,0,-1};

void dfs(const vector<vector<int>>&grid,vector<vecotr<bool>>&visited,int x,int y){
	for(int i = 0 ; i < 4; i++){
		int newtx = x + dir[i][0];
		int newty = y + dir[i][0];

		if(newtx < 0 || newtx > grid.size() || newty < 0 || newty >= grid[0].size()) continue;
		if(!visited[newtx][newty] && grid[newtx][newty] == 1){

			visited[newtx][newty] = true;
			dfs(grid,visited,newtx,newty);
		}

	}
}

int main(){
	int n,m;
	cin>>n>>m;
	vector<vector<int>>grid(n,vector<int>(m,n));
	for(int i = 0 ; i <n;i++){
		for(int j = 0;j <m;j++){
			cin>>grid[i][j];
		}
	}

	vector<vector<bool>>visited(n,vector<bool>(m,false));

	int result = 0;
	for(int i = 0;i<n;i++){
		for(int j = 0;j<m;j++){
			if(!visited[i][j] && grid[i][j] == 1){
				visited[i][j] = true;
				result++;
				dfs(grid,visited,i,j);
			}
		}
	}
	cout<<result<<endl;
}

岛屿bfs

#include<iostream>
#include<vector>
#include<queue>
using namespace std;

int dir[4][2] = {0,1,1,0,-1,0,0,-1};

void bfs(const vector<vector<int>>&grid,vector<vector<bool>>& visited,int x,int y){

	queue<pair<int,int>>que;
	que.push({x,y});
	visited[x][y] = true;

	while(!que.empty()){

		pair<int,int>cur = que.front(); que.pop();
		int curx = cur.first;
		int cury = cur.second;

		for(int i = 0; i <4;i++){
			int newtx = curx + dir[i][0];
			int newty = cury + dir[i][1];
			if(newtx < 0 || newtx >= grid.size() || newty < 0 || newty >= grid[0].size()){
				que.push({newtx,newty});
				visited[newtx][newty] = true;
			}
		}
	}
}

int main(){
	int n,m;
	cin>>n>>m;
	vector<vecotr<int>>grid(n,vector<int>(m,0));
	for(int i = 0; i<n;i++){
		for(int j = 0;j<m;j++){
			cin>>grid[i][j];
		}
	}
	vector<vector<bool>>visited(n,vector<bool>(m,false));
	int result = 0;
	for(int i = 0; i <n;i++){
		for(int j = 0;j<m;j++){
			if(!visited[i][j] &&grid[i][j] == 1){
				result++;
				bfs(grid,visited,i,j);
			}
		}
	}
	cout<<result<<endl;
}

100. 岛屿的最大面积

dfs

#include<iostream>
#include<vector>
using namespace std;
int count;
int dir[4][2] = {0,1,1,0,-1,0,0,-1};

void dfs(vector<vector<int>>&grid,vector<vector<bool>>&visited,int x,int y){
	for(int i = 0;i<4;i++){
		int newtx = x + dir[i][0];
		int newty = y + dir[i][1];
		if(newtx < 0 || newtx >=grid.size() || newty < 0 || newty >= grid[0].size()) continue;
		if(!visited[newtx][newty] && grid[newtx][newty] == 1){
			visited[newtx][newty] = true;
			count++;
			dfs(grid,visited,newtx,newty)
		}
	}
}

int main(){
	int n,m;
	cin>>n>>m;
	vector<vector<int>>grid(n,vector<int>(m,0));

	for(int i = 0 ; i <n;i++){
		for(int j = 0;j<m;j++){
			cin>>grid[i][j];
		}
	}

	vector<vector<bool>>visited(n,vector<bool>(m,false));
	int result = 0;
	for(int i =0;i<n;i++){
		for(int j = 0;j<m;j++){
			if(!visited[i][j]&&grid[i][j] == 1){
				count++;
				visited[i] = true;
				dfs(grid,visited,i,j);
				result = max(result,count);
			}
		}
	}
	cout<<result<<endl;
}

bfs

class Solution {
private:
    int count;
    int dir[4][2] = {0, 1, 1, 0, -1, 0, 0, -1}; // 四个方向
    void bfs(vector<vector<int>>& grid, vector<vector<bool>>& visited, int x, int y) {
        queue<int> que;
        que.push(x);
        que.push(y);
        visited[x][y] = true; // 加入队列就意味节点是陆地可到达的点
        count++;
        while(!que.empty()) {
            int xx = que.front();que.pop();
            int yy = que.front();que.pop();
            for (int i = 0 ;i < 4; i++) {
                int nextx = xx + dir[i][0];
                int nexty = yy + dir[i][1];
                if (nextx < 0 || nextx >= grid.size() || nexty < 0 || nexty >= grid[0].size()) continue; // 越界
                if (!visited[nextx][nexty] && grid[nextx][nexty] == 1) { // 节点没有被访问过且是陆地
                    visited[nextx][nexty] = true;
                    count++;
                    que.push(nextx);
                    que.push(nexty);
                }
            }
        }
    }

public:
    int maxAreaOfIsland(vector<vector<int>>& grid) {
        int n = grid.size(), m = grid[0].size();
        vector<vector<bool>> visited = vector<vector<bool>>(n, vector<bool>(m, false));
        int result = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (!visited[i][j] && grid[i][j] == 1) {
                    count = 0;
                    bfs(grid, visited, i, j); // 将与其链接的陆地都标记上 true
                    result = max(result, count);
                }
            }
        }
        return result;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2398343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于easyx头文件

一、窗口创建 &#xff08;1&#xff09;几种创建方式 #include<easyx.h>//easyx的头文件 #include<iostream> using namespace std;int main() {//创建一个500*500的窗口//参数为&#xff1a;长度&#xff0c;宽度&#xff0c;是否显示黑框&#xff08;无参为不…

django入门-orm数据库操作

一&#xff1a;下载数据库依赖项mysqlclient pip install mysqlclient 二&#xff1a;django配置文件配置数据库链接 路径&#xff1a;mysite2\mysite2\settings.py DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: data, # 数据库名称USER: root, …

STM32外部中断(EXTI)以及旋转编码器的简介

一、外部中断机制概述 中断是指当主程序执行期间出现特定触发条件&#xff08;即中断源&#xff09;时&#xff0c;CPU将暂停当前任务&#xff0c;转而执行相应的中断服务程序&#xff08;ISR&#xff09;&#xff0c;待处理完成后恢复原程序的运行流程。该机制通过事件驱动…

双擎驱动:华为云数字人与DeepSeek大模型的智能交互升级方案

一、技术融合概述 华为云数字人 华为云数字人&#xff0c;全称&#xff1a;数字内容生产线 MetaStudio。数字内容生产线&#xff0c;提供数字人视频制作、视频直播、智能交互、企业代言等多种服务能力&#xff0c;使能千行百业降本增效。另外&#xff0c;数字内容生产线&#…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.5 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.5 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 dataframe <-data.frame( wrapc(17,20,12,9,…

字节新出的MCP应用DeepSearch,有点意思。

大家好&#xff0c;我是苍何。 悄悄告诉你个事&#xff0c;昨天我去杭州参加字节火山方舟举办的开发者见面会了&#xff0c;你别说&#xff0c;还真有点刘姥姥进大观园的感觉&#x1f436; 现场真实体验完这次新发布的产品和模型&#xff0c;激动的忍不住想给大家做一波分享。…

期货反向跟单运营逻辑推导思路

期货反向跟单运营逻辑推导思路 很多刚接触期货反向跟的朋友第一印象就是&#xff1a;这绝对是一个完美的策略&#xff0c;在认知不到位的情况下就开始运营&#xff0c;结果就是赔的稀里哗啦。然后告诉身边所有的人&#xff0c;期货反向跟单不靠谱。 这就是一个很有意思的事情&…

使用 HTML + JavaScript 实现图片裁剪上传功能

本文将详细介绍一个基于 HTML 和 JavaScript 实现的图片裁剪上传功能。该功能支持文件选择、拖放上传、图片预览、区域选择、裁剪操作以及图片下载等功能&#xff0c;适用于需要进行图片处理的 Web 应用场景。 效果演示 项目概述 本项目主要包含以下核心功能&#xff1a; 文…

【灵动Mini-F5265-OB】vscode+gcc工程创建、下载、调试

【前言】 【灵动Mini-F5265-OB】在官方的例程中提供了mdk、IAR的开发环境&#xff0c;使用起来非常方便。有位大佬也提供了一个gcc的示例&#xff0c;但是我使用vscode的keil插件进行工程创建&#xff0c;但是提示pack是对不上的。所以我决定重新创建我的vscode来创建开发环境。…

现代语言模型中的分词算法全解:从基础到高级

基础分词&#xff08;Naive Tokenization&#xff09; 最简单的分词方式是基于空格将文本拆分为单词。这是许多自然语言处理&#xff08;NLP&#xff09;任务中常用的一种分词方法。 text "Hello, world! This is a test." tokens text.split() print(f"Tok…

第十三章 Java基础-特殊处理

文章目录 1.包和final2.权限修饰符和代码块3.抽象类1.包和final 2.权限修饰符和代码块 3.抽象类

【操作系统原理08】文件管理

文章目录 零.大纲一.文件管理0.大纲1.文件管理1.1 **文件属性**1.2 文件内部数据组织1.3 文件之间的组织1.4操作系统提供功能1.5 文件在外存存放 二.文件的逻辑结构0.大纲1.无结构文件2.有结构文件 三.文件目录0.大纲1.文件控制块2.目录结构3.索引节点(FCB改进) 四.文件共享0.大…

图论学习笔记 5 - 最小树形图

我们不废话&#xff0c;直接进入正题&#xff1a;最小树形图&#xff0c;一个名字看起来很高级的东西。 声明&#xff1a;为了便于理解&#xff0c;可能图片数量会有亿点点多。图片尺寸可能有的较大。 概念 最小树形图的英文是 Directed Minimum Spanning Tree。 相信懂英文…

《自动驾驶轨迹规划实战:Lattice Planner实现避障路径生成(附可运行Python代码)》—— 零基础实现基于离散优化的避障路径规划

《自动驾驶轨迹规划实战&#xff1a;Lattice Planner实现避障路径生成&#xff08;附可运行Python代码&#xff09;》 —— 零基础实现基于离散优化的避障路径规划 一、为什么Lattice Planner成为自动驾驶的核心算法&#xff1f; 在自动驾驶的路径规划领域&#xff0c;Lattice…

PyTorch——卷积操作(2)

二维矩阵 [[ ]] 这里面conv2d(N,C,H,W)里面的四个是 N就是batch size也就是输入图片的数量&#xff0c;C就是通道数这只是一个二维张量所以通道为1&#xff0c;H就是高&#xff0c;W就是宽&#xff0c;所以是1 1 5 5 卷积核 reshape 第一个参数是batch size样本数量 第二个参数…

【JavaWeb】SpringBoot原理

1 配置优先级 在前面&#xff0c;已经学习了SpringBoot项目当中支持的三类配置文件&#xff1a; application.properties application.yml application.yaml 在SpringBoot项目当中&#xff0c;我们要想配置一个属性&#xff0c;通过这三种方式当中的任意一种来配置都可以&a…

ubuntu22.04安装taskfile

sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -dsudo mv ./bin/task /usr/local/bin/测试 task --version

遥感影像建筑物变化检测

文章目录 效果1、环境安装2、项目下载3、数据集下载4、模型训练5、模型推理6、推理结果7、批量推理效果 1、环境安装 参考文章 搭建Pytorch的GPU环境超详细 win10安装3DGS环境(GPU)超详细 测试GPU环境可用 2、项目下载 https://gitcode.com/gh_mirrors/ch/change_detectio…

多模态大语言模型arxiv论文略读(103)

Are Bigger Encoders Always Better in Vision Large Models? ➡️ 论文标题&#xff1a;Are Bigger Encoders Always Better in Vision Large Models? ➡️ 论文作者&#xff1a;Bozhou Li, Hao Liang, Zimo Meng, Wentao Zhang ➡️ 研究机构: 北京大学 ➡️ 问题背景&…

汇编语言基础: 搭建实验环境

环境配置 1.Visual Studio 创建空项目 创建成功 2.平台框架改为为WIN32 右键点击项目 点击属性 点击配置管理器 平台改为Win32(本文使用32位的汇编) 3.生成采用MASM 在项目属性里点击"生成依赖项"的"生成自定义" 勾选 masm 4.创建第一个汇编程序 右…