剑指 Offer 12_II. 矩阵中的最大面积

剑指 Offer 12_II. 矩阵中的最大面积

题目描述

复制代码
[[".",".","*","*"],
[".","*","*","."],
["*",".","*","."]]

.代表海洋面积

*代表陆地面积

求连成片的最大陆地面积

解题思路:

该题是https://blog.csdn.net/sqc157400661/article/details/140838769的变形,解题思路类似。本题将不在赘述。

代码:

go 复制代码
package main

import "fmt"

var sum int
func main(){
	board := [][]string{
		{"*",".",".","*"},
		{"*","*",".","."},
		{"*",".","*","*"},
		{".","*","*","."},
	}
	fmt.Println(board)
	rows := len(board)
	cols := len(board[0])
	max := 0
	for i:=0; i < rows; i++  {
		for j := 0; j < cols; j++ {
			sum = 0
			tmp := dfsSum(&board,i,j)
			if tmp > max {
				max = sum
			}
		}
	}
	fmt.Println(max)
	fmt.Println(board)
}

func dfsSum(board *[][]string, i, j int) int {
	rows := len(*board)
	cols := len((*board)[0])
	if i<0 || j<0|| i>= rows || j >= cols || (*board)[i][j] != "*"{
		return 0
	}
	sum++
	(*board)[i][j] = "-"
	fmt.Println(*board)
	// 右边
	dfsSum(board,i,j+1)
	// 左边
	dfsSum(board,i,j-1)
	// 下面
	dfsSum(board,i+1,j)
	(*board)[i][j] = "*"
	return sum
}
相关推荐
开源之眼3 分钟前
GitHub star和github Vue3 响应式选择指南:ref 与 reactive 加星该怎么用?
算法·github
苦藤新鸡38 分钟前
6.三数之和
c语言·c++·算法·力扣
Frank_refuel1 小时前
C++之内存管理
java·数据结构·c++
s09071361 小时前
连通域标记:从原理到数学公式全解析
图像处理·算法·fpga开发·连通域标记
@小码农1 小时前
6547网:202512 GESP认证 C++编程 一级真题题库(附答案)
java·c++·算法
自然语1 小时前
人工智能之数字生命-特征类升级20260106
人工智能·算法
菜鸟233号1 小时前
力扣343 整数拆分 java实现
java·数据结构·算法·leetcode
赫凯2 小时前
【强化学习】第五章 时序差分算法
算法
leiming62 小时前
c++ find_if 算法
开发语言·c++·算法
yuanmenghao2 小时前
自动驾驶中间件iceoryx - 内存与 Chunk 管理(三)
数据结构·c++·算法·链表·中间件·自动驾驶