当前位置: 首页 > news >正文

OJ-1015图像物体的边界

分析

思路

1.输入读取:读取网格的维度(M,N)和像素值到一个二维数组中。
2.迭代:遍历二维数组中的每个单元格。
3.边界检测:对于每个像素值为1的单元格,检查其八个相邻的单元格。如果任何相邻单元格的像素值为5,则增加边界计数。
4,边界计数调整:由于每个边界被计算两次(分别与相邻的两个像素1相关联),需要将计数调整为实际的边界数量。
5,输出结果:输出最终的像素1代表的物体的边界数量。
这个算法基于遍历和相邻像素的检查,以计算像素1代表的物体的边界数量。
 

示例1

输入
6 6
1 1 1 1 1 1
1 5 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 5
输出
2

示例2

输入
6 6
1 1 1 1 1 1
1 5 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 5 1
1 1 1 1 1 1
输出
1

代码优化:

import java.util.Scanner;public class 图像物体边界 {public static int row;public static int col;public static int[][] matrix;public static void main(String[] args) {Scanner in = new Scanner(System.in);row = in.nextInt();col = in.nextInt();matrix = new int[row][col];for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {matrix[i][j] = in.nextInt();}}for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (matrix[i][j] == 5) {if (i > 0 && j > 0) matrix[i - 1][j - 1] = 0;if (i > 0) matrix[i - 1][j] = 0;if (i > 0 && j < col - 1) matrix[i - 1][j + 1] = 0;if (j > 0) matrix[i][j - 1] = 0;if (i > 0 && j < col - 1) matrix[i][j + 1] = 0;if (i < row - 1 && j > 0) matrix[i + 1][j - 1] = 0;if (i < row - 1 && j < col - 1) matrix[i + 1][j + 1] = 0;}}}int count = 0;for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (matrix[i][j] == 0) {count++;matrix[i][j] = -1;countBorder(i, j);}}}System.out.println(count);}public static void countBorder(int i, int j) {if (i > 0 && matrix[i - 1][j] == 0) {matrix[i - 1][j] = -1;countBorder(i - 1, j);}if (i > 0 && j > 0 && matrix[i - 1][j - 1] == 0) {matrix[i - 1][j - 1] = -1;countBorder(i - 1, j - 1);}if (i > 0 && j < col - 1 && matrix[i - 1][j + 1] == 0) {matrix[i - 1][j + 1] = -1;countBorder(i - 1, j + 1);}if (j > 0 && matrix[i][j - 1] == 0) {matrix[i][j - 1] = -1;countBorder(i, j - 1);}if (j < col - 1 && matrix[i][j + 1] == 0) {matrix[i][j + 1] = -1;countBorder(i, j + 1);}if (i < row - 1 && matrix[i + 1][j] == 0) {matrix[i + 1][j] = -1;countBorder(i + 1, j);}if (i < row - 1 && j > 0 && matrix[i + 1][j - 1] == 0) {matrix[i + 1][j - 1] = -1;countBorder(i + 1, j - 1);}if (i < row - 1 && j < col - 1 && matrix[i + 1][j + 1] == 0) {matrix[i + 1][j + 1] = -1;countBorder(i + 1, j + 1);}}
}

277.【华为OD机试】图像物体的边界(深度优先搜索 (DFS)—Java&Python&C++&JS实现)_图像物体的边界华为od-CSDN博客

相关文章:

OJ-1015图像物体的边界

分析 思路 1.输入读取&#xff1a;读取网格的维度(M&#xff0c;N)和像素值到一个二维数组中。 2.迭代:遍历二维数组中的每个单元格。 3.边界检测:对于每个像素值为1的单元格,检查其八个相邻的单元格。如果任何相邻单元格的像素值为5,则增加边界计数。 4,边界计数调整:由于每…...

RAG 入门实践:从文档拆分到向量数据库与问答构建

本文将使用 Transformers 和 LangChain&#xff0c;选择在 Retrieval -> Chinese 中表现较好的编码模型进行演示&#xff0c;即 chuxin-llm/Chuxin-Embedding。 你还将了解 RecursiveCharacterTextSplitter 的递归工作原理。 一份值得关注的基准测试榜单&#xff1a;MTEB (M…...

445: 选择问题

解法&#xff1a; 第k大的数据查找 a, b map(int, input().split()) l list(map(int, input().split())) l.sort() print(l[b-1])...

IP地址类型选择指南:动态IP、静态IP还是数据中心IP?

你是否曾经困惑于如何选择最适合业务需求的IP地址类型&#xff1f;面对动态IP、静态IP和数据中心IP这三种选择&#xff0c;你是否了解它们各自对你的跨境在线业务可能产生的深远影响&#xff1f; 在跨境电商领域&#xff0c;选择合适的IP类型对于业务的成功至关重要。动态IP、…...

基于Python flask的豆瓣电影可视化系统,豆瓣电影爬虫系统

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…...

面试不是一场遭遇战

引言 Ethan第一次跳槽时&#xff0c;把工作总结搞成简历&#xff0c;丢到BOSS&#xff0c;面了几场&#xff0c;结果都很糟。复盘下来&#xff0c;发现面试过程临场发挥太多&#xff0c;把攻坚战打成了遭遇战。 那面试要如何准备&#xff1f;什么情况下跳槽&#xff1f;有哪些大…...

【力扣 | SQL题 | 每日3题】力扣1795,1907,1398,602

1. 力扣1795&#xff1a;每个产品在不同商品的价格 1.1 题目&#xff1a; 表&#xff1a;Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | store1 | int | | store2 | int | | store3 …...

centos7.9升级rockylinux8.8

前言 查看centos的版本 &#xff0c;我这台服务器是虚拟机,下面都是模拟实验 升级前一定要把服务器上配置文件&#xff0c;数据等进行备份 [rootlocalhost ~]#cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]#uname -a Linux jenkins_ser…...

C++初阶(三)---C++入门(下)

目录 一、内联函数 1.内联函数的定义与底层机制 0x01.内联函数的定义 0x02.内联函数的底层机制 2.内联函数的优缺点 优点&#xff1a; 缺点&#xff1a; 3.内联函数的使用建议 4.内联函数的注意事项 二、auto关键字&#xff08;C11&#xff09; 1.代码示例 2.auto使…...

Linux--多路转接之epoll

上一篇:Linux–多路转接之select epoll epoll 是 Linux 下多路复用 I/O 接口 select/poll 的增强版本&#xff0c;它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统 CPU 利用率。它是 Linux 下多路复用 API 的一个选择&#xff0c;相比 select 和 poll&#xff0c…...

自动化工具Nico,从零开始干掉Appium,移动端自动化测试框架实现

这篇将用较短的篇幅给大家介绍我是如何实现iOS和Android的inspector&#xff08;元素审查工具&#xff09;的。 实现原理 为了更方便的显示UI界面&#xff0c;且更容易制作&#xff0c;我选择了使用web端来承载整个元素树展示。同时我选用Flask一次性梭哈前后端&#xff08;因…...

Fast CRC32

链接&#xff1a; Fast CRC32 Error Checking Real life data tends to get corrupted because machines (and humans) are never as reliable as we wish for. One efficient way is make sure your data wasnt unintendedly modifiied is to generate some kind of hash. T…...

生成一个带有二维数据和对应标签的螺旋形数据集(非线性可分数据集)的代码解析

def create_dataset():np.random.seed(1)m 400 # 数据量N int(m/2) # 每个标签的实例数D 2 # 数据维度X np.zeros((m,D)) # 数据矩阵Y np.zeros((m,1), dtypeuint8) # 标签维度a 4 for j in range(2):ix range(N*j,N*(j1))t np.linspace(j*3.12,(j1)*3.12,N) np.rando…...

PHP unset() 函数的作用

PHP 中的 unset() 函数用于销毁指定的变量。具体来说&#xff0c;它会解除变量名与其数据之间的关联&#xff0c;从而释放该变量所占用的内存。不过需要注意的是&#xff0c;unset() 并不是删除变量的内容&#xff0c;而是取消对变量名的引用。如果变量是数组中的某个元素或者对…...

长篇故事可视化方法Story-Adapter:能够生成更高质量、更具细腻交互的故事图像,确保每一帧都能准确地传达故事情节。

今天给大家介绍一个最新的长篇故事可视化方法Story-Adapter&#xff0c;它的工作原理可以想象成一个画家在创作一幅长画卷。首先&#xff0c;画家根据故事的文本提示画出初步的图像。这些图像就像是画卷的草图。接下来&#xff0c;画家会不断回顾这些草图&#xff0c;逐步添加细…...

C++基础面试题 | 什么是C++中的运算符重载?

文章目录 回答重点&#xff1a;示例&#xff1a; 运算符重载的基本规则和注意事项&#xff1a; 回答重点&#xff1a; C的运算符重载是指可以为自定义类型&#xff08;如类或结构体&#xff09;定义运算符的行为&#xff0c;使其像内置类型一样使用运算符。通过重载运算符&…...

深入 IDEA 字节码世界:如何轻松查看 .class 文件?

前言&#xff1a; 作为一名 Java 开发者&#xff0c;理解字节码对于优化程序性能、调试错误以及深入了解 JVM 运行机制非常重要。IntelliJ IDEA 作为最流行的开发工具之一&#xff0c;为开发者提供了查看 .class 文件字节码的功能。在本文中&#xff0c;我将带你一步步探索如何…...

NodeJS 利用代码生成工具编写GRPC

生成的 gRPC 代码优点 自动化和效率: 减少手动编码:生成代码自动处理了消息的序列化和反序列化、服务接口的定义等,减少了手动编码的工作量。一致性:生成的代码确保了客户端和服务器之间的一致性,避免了手动编码可能带来的错误。跨语言支持: 多语言兼容:gRPC 支持多种编…...

uni-app基础语法(一)

我们今天的学习目标 基础语法1. 创建新页面2.pages配置页面3.tabbar配置4.condition 启动模式配置 基础语法 1. 创建新页面 2.pages配置页面 属性类型默认值描述pathString配置页面路径styleObject配置页面窗口表现&#xff0c;配置项参考pageStyle 我们来通过style修改页面的…...

Linux:进程控制(三)——进程程序替换

目录 一、概念 二、使用 1.单进程程序替换 2.多进程程序替换 3.exec接口 4.execle 一、概念 背景 当前进程在运行的时候&#xff0c;所执行的代码来自于自己的源文件。使用fork创建子进程后&#xff0c;子进程执行的程序中代码内容和父进程是相同的&#xff0c;如果子进…...

WRF风场后处理实战:用Python+Cartopy绘制500hPa风场矢量图(附完整代码)

WRF风场后处理实战&#xff1a;用PythonCartopy绘制500hPa风场矢量图&#xff08;附完整代码&#xff09; 气象数据分析中&#xff0c;风场可视化是理解大气环流特征的关键环节。WRF&#xff08;Weather Research and Forecasting&#xff09;模式输出的数据包含丰富的三维风场…...

MinerU 2.5-1.2B新手教程:无需深度学习基础,快速上手PDF提取

MinerU 2.5-1.2B新手教程&#xff1a;无需深度学习基础&#xff0c;快速上手PDF提取 1. 引言&#xff1a;为什么选择MinerU&#xff1f; PDF文档是我们日常工作和学习中常见的文件格式&#xff0c;但要从PDF中提取内容却常常让人头疼。特别是遇到学术论文、技术报告这类包含复…...

EcomGPT中英文7B模型部署案例:跨境电商运营者如何用一行bash启动AI助手

EcomGPT中英文7B模型部署案例&#xff1a;跨境电商运营者如何用一行bash启动AI助手 1. 项目概述 EcomGPT电商领域智能助手是基于阿里EcomGPT-7B-Multilingual多语言电商大模型开发的Web应用。这个工具专门为电商从业者设计&#xff0c;通过直观的网页界面提供商品分类、属性提…...

5步攻克MZmine 3质谱数据分析:从问题解决到专业应用的实战指南

5步攻克MZmine 3质谱数据分析&#xff1a;从问题解决到专业应用的实战指南 【免费下载链接】mzmine3 MZmine 3 source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine3 MZmine 3作为开源质谱数据分析领域的核心工具&#xff0c;在代谢组学、蛋白质…...

光影魔术师:看LiuJuan Z-Image如何生成电影感氛围人像

光影魔术师&#xff1a;看LiuJuan Z-Image如何生成电影感氛围人像 1. 引言&#xff1a;重新定义AI人像生成标准 在数字内容爆炸式增长的今天&#xff0c;高质量人像图片的需求从未如此强烈。从电商产品展示到社交媒体内容创作&#xff0c;从游戏角色设计到影视概念预览&#…...

构建语音驱动的智能Agent:集成SenseVoice-Small与AI决策框架

构建语音驱动的智能Agent&#xff1a;集成SenseVoice-Small与AI决策框架 你有没有想过&#xff0c;对着电脑说句话&#xff0c;它就能帮你写代码、查资料、甚至控制智能家居&#xff1f;这听起来像是科幻电影里的场景&#xff0c;但现在&#xff0c;通过将强大的语音识别模型与…...

ChatGLM-6B角色扮演功能开发:基于Prompt的智能对话系统

ChatGLM-6B角色扮演功能开发&#xff1a;基于Prompt的智能对话系统 1. 引言 想象一下&#xff0c;你正在开发一个智能客服系统&#xff0c;需要让AI能够扮演不同角色的专业人士来回答用户问题。或者你正在创建一个教育应用&#xff0c;希望AI能够化身历史人物、科学导师或文学…...

深度解析ShardingCore:EF Core分库分表架构实战与性能优化指南

深度解析ShardingCore&#xff1a;EF Core分库分表架构实战与性能优化指南 【免费下载链接】sharding-core high performance lightweight solution for efcore sharding table and sharding database support read-write-separation .一款ef-core下高性能、轻量级针对分表分库…...

OpenClaw多通道管理:百川2-13B-4bits量化模型同时接入飞书与钉钉

OpenClaw多通道管理&#xff1a;百川2-13B-4bits量化模型同时接入飞书与钉钉 1. 为什么需要多通道管理&#xff1f; 上个月我遇到一个尴尬场景&#xff1a;团队部分成员用飞书沟通&#xff0c;另一部分用钉钉。当我尝试用OpenClaw搭建自动化助手时&#xff0c;不得不在两个平…...

Beyond Compare 5专业授权生成器:3种高效授权方案完整指南

Beyond Compare 5专业授权生成器&#xff1a;3种高效授权方案完整指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare作为业界领先的文件对比工具&#xff0c;其强大的功能在软件…...