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

JAVA练习106- 生命游戏

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、题目-生命游戏

1.题目描述

2.思路与代码

2.1 思路

2.2 代码

总结


前言

提示:这里可以添加本文要记录的大概内容:

4 月12日练习内容


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目-生命游戏

1.题目描述

根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。

给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:

如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
如果死细胞周围正好有三个活细胞,则该位置死细胞复活;
下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。

示例 1:

输入:board = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]
输出:[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]

示例 2:
输入:board = [[1,1],[1,0]]
输出:[[1,1],[1,1]]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/game-of-life
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.思路与代码

2.1 思路

1.从原数组复制一份到 copyBoard 中

2.遍历面板每一个格子里的细胞

3.对于每一个细胞统计其八个相邻位置里的活细胞数量

4.查看相邻的细胞是否是活细胞

2.2 代码

代码如下(示例):
 

class Solution {public void gameOfLife(int[][] board) {int[] neighbors = {0, 1, -1};int rows = board.length;int cols = board[0].length;// 创建复制数组 copyBoardint[][] copyBoard = new int[rows][cols];// 从原数组复制一份到 copyBoard 中for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {copyBoard[row][col] = board[row][col];}}// 遍历面板每一个格子里的细胞for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {// 对于每一个细胞统计其八个相邻位置里的活细胞数量int liveNeighbors = 0;for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (!(neighbors[i] == 0 && neighbors[j] == 0)) {int r = (row + neighbors[i]);int c = (col + neighbors[j]);// 查看相邻的细胞是否是活细胞if ((r < rows && r >= 0) && (c < cols && c >= 0) && (copyBoard[r][c] == 1)) {liveNeighbors += 1;}}}}// 规则 1 或规则 3      if ((copyBoard[row][col] == 1) && (liveNeighbors < 2 || liveNeighbors > 3)) {board[row][col] = 0;}// 规则 4if (copyBoard[row][col] == 0 && liveNeighbors == 3) {board[row][col] = 1;}}}}
}

总结

提示:这里对文章进行总结:
 

相关文章:

JAVA练习106- 生命游戏

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、题目-生命游戏 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 4 月12日练习…...

【案例教程】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术

【原文链接】: 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247537049&idx3&sn31ef342c4808aed6fee6ac108b899a33&chksmfe6897f3c91f1ee5c4fa8e4eeea34…...

php7类型约束,严格模式

在PHP7之前&#xff0c;函数和类方法不需要声明变量类型 &#xff0c;任何数据都可以被传递和返回&#xff0c;导致几乎大部分的调用操作都要判断返回的数据类型是否合格。 为了解决这个问题&#xff0c;PHP7引入了类型声明。 目前有两类变量可以声明类型&#xff1a; 形参&a…...

2023-04-11 无向图的匹配问题

无向图的匹配问题 之所以把无向图的这个匹配问题放到最后讲是因为匹配问题借鉴了有向图中一些算法的思想 1 最大匹配和完美匹配 二分图回顾 二分图&#xff1a;把一个图中的所有顶点分成两部分&#xff0c;如果每条边的两端分别属于不同部分&#xff0c;则这个图是二分图。更多…...

国家出手管人工智能AI了

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 全球都在封杀AI&#xff0c;国家也出手了&#xff0c;人工智能AI的强监管来了!这次反应速度算是很快了。国家出手&#xff0c;AI必须管。 国家网信办拟针对生成式人工智能服务出台管理办法&#…...

day24—选择题

文章目录1.将N条长度均为M的有序链表进行合并&#xff0c;合并以后的链表也保持有序&#xff0c;时间复杂度为&#xff08;A&#xff09;2.已知某个哈希表的n个关键字具有相同的哈希值&#xff0c;如果使用二次探测再散列法将这n个关键字存入哈希表&#xff0c;至少要进行&…...

自投递简历以来的第一次面试

投完简历之后HR小姐姐接着就安排了面试&#xff0c;原定时间是今天下午六点&#xff0c;我五点五十进的会议&#xff0c;结果等到六点二十&#xff08;真的有点不耐烦了说实话&#xff09;面试官打电话过来了说网络不是很好&#xff0c;所以改成电话面试了。 1、session信息保…...

【C++11】新特性 - 右值引用详解

文章目录STD容器使用右值引用场景移动语义在容器中的使用主要体现在两个方面&#xff1a;移动构造函数和移动赋值运算符。移动语义只对右值有效&#xff0c;对左值无效原因STD容器使用右值引用场景 移动语义在容器中的使用主要体现在两个方面&#xff1a;移动构造函数和移动赋…...

C++学习笔记

C学习笔记函数一般有返回值&#xff0c;构造函数有没有返回值&#xff1f;有返回值&#xff0c;返回一个对象&#xff0c;确定所以没写&#xff1b;在头文件中&#xff0c;防卫式声明&#xff0c;#ifndef…#define … #endif;pass by value或者 reference&#xff0c;传值是整包…...

项目1实现login登录功能方案设计第三版

需求优化点:MySQL表常用功能模块实现方案index页面home页面需求 实现一个登录功能 实现的功能 注册(邮箱注册)登录(邮箱密码)重置密码查看操作记录(登录, 注册, 重置密码, 登出. 都算操作)登出在第2版的基础上进行优化:\ 优化点: VerificationCode(验证码储存库): 增加时间字段…...

Node【七】初识Express框架

文章目录&#x1f31f;前言&#x1f31f;Express框架&#x1f31f;1.什么是框架&#x1f31f;2.express安装&#x1f31f;3.创建web服务基本遵循之前的四个步骤&#xff1a;&#x1f31f;4.路由&#x1f31f; 由 &#xff1a;请求方式请求路径&#xff08;1&#xff09;get发送…...

Android 高通Camera2 Camera Device Close

1、很多人看到这个日志第一感觉可能觉得哪里没有合理释放&#xff0c;于是带着这个思路去进行百度探索 2、一开始我去寻找 ImageReader.OnImageAvailableListener 这个问题 var afterBitmap: Bitmap? null/**监听拍照的图片 */private val imageAvailableListener ImageRead…...

TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5

原文&#xff1a;Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的…...

4、浅谈Makefile文件及其简单的使用知识

文章目录1、什么是Makefile&#xff1f;&#xff08;1&#xff09;makefile关系到了整个工程的编译规则。&#xff08;2&#xff09;makefile带来的好处就是——“自动化编译”&#xff08;3&#xff09;make是一个命令工具&#xff0c;是一个解释makefile中指令的命令工具2、为…...

5G/V2X赛道「重启」

在提升高阶智能驾驶安全性和感知冗余能力的道路上&#xff0c;除了激光雷达、高精度地图及定位&#xff0c;还有一项技术可能即将掀起一场新的风暴。 就在今年3月&#xff0c;作为全球通信领域的年度风向标 — 2023世界移动通信大会&#xff08;MWC&#xff09;上&#xff0c;…...

pytorch进阶学习(四):使用不同分类模型进行数据训练(alexnet、resnet、vgg等)

课程资源&#xff1a;5、帮各位写好了十多个分类模型&#xff0c;直接运行即可【小学生都会的Pytorch】_哔哩哔哩_bilibili 目录 一、项目介绍 1. 数据集准备 2. 运行CreateDataset.py 3. 运行TrainModal.py 4. 如何切换显卡型号 二、代码 1. CreateDataset.py 2.Train…...

Java面向对象高级【注解和反射】

目录 注解 什么是注解&#xff1f; 自定义注解 元注解 反射 什么是反射 静态语言和动态语言 动态语言 静态语言 对比 Class类 Java内存分析 类加载过程 类加载器 获取运行时类的完整结构 通过Class对象实例化对象 1.调用Class对象的newInstance 2.Constructor…...

Pytorch基础 - 4. torch.expand() 和 torch.repeat()

目录 1. torch.expand(*sizes) 2. torch.repeat(*sizes) 3. 两者内存占用的区别 在PyTorch中有两个函数可以用来扩展某一维度的张量&#xff0c;即 torch.expand() 和 torch.repeat() 1. torch.expand(*sizes) 【含义】将输入张量在大小为1的维度上进行拓展&#xff0c;…...

《LeetCode》——LeetCode刷题日记

本期&#xff0c;将给大家带来的是关于 LeetCode 的关于二叉树的题目讲解。 目录 &#xff08;一&#xff09;606. 根据二叉树创建字符串 &#x1f4a5;题意分析 &#x1f4a5;解题思路 &#xff08;二&#xff09;102. 二叉树的层序遍历 &#x1f4a5;题意分析 &#…...

mysql数据库审计(1)

1.数据库审计工具介绍及选择 1.1. 数据库审计工具介绍 MySQL 分支的审计功能包含在企业版中&#xff0c;社区版可以使用其他分支提供的工具。目前已知的审计工具&#xff0c;社区版本有 Percona 的 Percona Server Audit Log 、MariaDB 的 MariaDB Audit Plugin 和 McAfee 的…...

STM32 SPI驱动W25Q128避坑指南:CubeMX配置、时序模式与读写超时那些事儿

STM32 SPI驱动W25Q128实战避坑指南&#xff1a;从时序陷阱到性能调优 1. 当SPI遇上Flash&#xff1a;硬件工程师的暗礁地带 在嵌入式存储解决方案中&#xff0c;W25Q128系列SPI Flash凭借其紧凑封装和简单接口&#xff0c;已成为众多STM32项目的标配外设。但看似简单的四线接口…...

量子同态加密:理论与实践的突破

1. 量子同态加密&#xff1a;理论与实践的桥梁量子同态加密&#xff08;Quantum Homomorphic Encryption, QHE&#xff09;是密码学领域的一项突破性技术&#xff0c;它允许在加密的量子数据上直接执行任意量子计算&#xff0c;而无需事先解密。这项技术对于构建真正隐私保护的…...

Claude Code 2026 路线图深度拆解:5 大新增能力与企业级项目落地时间表

1. 5 大新增能力不是“功能列表”,而是上下文治理的5个切口 大多数人看到「Claude Code 2026 路线图」的第一反应,是去官网截图那张带箭头和时间轴的PPT——然后立刻开始评估“哪个功能我团队下周就能用上”。我试过。去年Q4我们团队在三个项目里并行接入了路线图中已发布的…...

从PyCharm到ArcGIS工具箱:把你的Python地理处理脚本‘打包’成专业工具的保姆级指南

从PyCharm到ArcGIS工具箱&#xff1a;Python地理处理脚本的专业化封装实战 当你在PyCharm中完成了一个完美运行的地理处理脚本&#xff0c;接下来最自然的想法就是让它能被更多非技术同事直接使用。本文将带你跨越开发环境与生产环境的鸿沟&#xff0c;将一个孤立的Python脚本转…...

Linux存储管理:块设备与分区表的本质区别及实践指南

1. 项目概述&#xff1a;一次关于存储本质的深度对话“我不是表&#xff0c;我是块设备”——这个标题乍一看有点哲学意味&#xff0c;像是在为某个被误解的实体正名。在Linux的世界里&#xff0c;这恰恰揭示了存储管理中一个最核心、也最容易被混淆的概念关系&#xff1a;分区…...

wpa_ctrl接口简介和使用总结

参考&#xff1a; wpa_supplicant简介与基础使用总结-CSDN博客 wpa_cli核心操作总结-CSDN博客 认识wpa_ctrl接口 在嵌入式Linux的C语言开发中&#xff0c;与 wpa_supplicant 交互的标准方法就是使用它官方提供的 wpa_ctrl 接口。这个接口以一组简单的C函数形式提供&#xff0c;…...

【人工智能】某公司AI落地实践总结

某公司AI落地实践总结 一、AI落地的整体路径框架 某公司的AI落地遵循"认知 → 工具使用 → 流程自动化 → 高阶能力构建 → 场景化落地 → 持续迭代 → 激励驱动"的闭环路径,具体分为四个阶段: 初阶入门(认知筑基):AI基础概念与常用工具,零基础扫盲,掌握提示…...

B站视频下载神器:如何优雅地将Bilibili内容保存到本地

B站视频下载神器&#xff1a;如何优雅地将Bilibili内容保存到本地 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/b…...

产品经理必懂的博弈论:如何用帕累托最优和纳什均衡设计用户激励与平台规则

产品经理必懂的博弈论&#xff1a;如何用帕累托最优和纳什均衡设计用户激励与平台规则 在互联网产品的世界里&#xff0c;每天都有无数场看不见的博弈正在上演——司机与乘客的匹配、商家与消费者的互动、创作者与平台的共生。这些看似复杂的商业行为背后&#xff0c;往往遵循着…...

Node.js 服务端应用接入 Taotoken 实现异步对话补全的完整步骤

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Node.js 服务端应用接入 Taotoken 实现异步对话补全的完整步骤 在 Node.js 服务端应用中集成大模型能力&#xff0c;通常需要处理密…...