[Leetcode每日一题]289. 生命游戏

基于深度强化学习的柔性作业车间动态调度 在追求敏捷和灵活的生产调度方面,处理不可预测的动态事件的能力变得越来越重要。与此同时,生产系统中的网络-物理融合产生了大量需要实时挖掘和分析的工业数据。为了便于这种实时控制,本研究提出了一种分层分布式的体系结构来解决动态柔性作业车间调度问题。采用双深度Q网络算法(DDQN)训练调度智能体,捕捉生产信息与调度目标之间的关系,为具有恒定任务到达的柔性作业车间实时做出调度决策。为了处理动态调度中问题的可变规格说明,提出了专门的状态和动作表示法。此外,还提出了一种代理奖励整形技术(surrogate reward 阅读详情

题目描述:

根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 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]]

提示:
m = board.length
n = board[i].length
1 <= m, n <= 25
board[i][j] 为 0 或 1

代码:

package leetcodeday1;

public class leetcode289 {

    // 八个方向
    int[] dx = {-1, 1, 0, 0, -1, -1, 1, 1};
    int[] dy = {0, 0, -1, 1, -1, 1, -1, 1};

    // 枚举,扫描该细胞八个方向上细胞的情况,并以此进行操作,即边扫描边改变当前细胞的状态
    // 但这样会存在问题,你改变了某个点的状态,之后的细胞也会受到影响
//    public void gameOfLife(int[][] board) {
//        if (board.length == 0){
//            return;
//        }
//        int m = board.length;
//        int n = board[0].length;
//
//        // 标记数组,0为不变,1代表变成活细胞, 0代表变成死细胞
//        int[][] flag = new int[m][n];
//        for (int i = 0; i < m; i++){
//            for (int j = 0; j < n; j++){
//                flag[i][j] = 0;
//            }
//        }
//
//        for (int i = 0; i < m; i++){
//            for (int j = 0; j < n; j++){
//                //记录该细胞八个方向的活细胞数量
//                int cnt = 0;
//                for (int k = 0; k < 8; k++){
//                    int x = i + dx[k];
//                    int y = j + dy[k];
//                    if (x < 0 || x >= m || y < 0 || y >= n){
//                        continue;
//                    }
//                    cnt += (board[x][y] & 1);
//                }
//                // 该细胞为活细胞
//                if ((board[i][j] & 1) == 1){
//                    // 情况1
//                    if (cnt < 2){
//                        flag[i][j] = -1;
//                    }
//                    else if (cnt <=3){
//                        // 情况2
//                        flag[i][j] = 1;
//                    }else {
//                        // 情况3
//                        flag[i][j] = -1;
//                    }
//                }else {
//                    //该细胞为死细胞
//                    // 情况4
//                    if (cnt == 3){
//                        flag[i][j] = 1;
//                    }
//
//                }
//            }
//        }
//        for (int i = 0 ; i < m; i++){
//            for (int j = 0; j < n; j++){
//                if (flag[i][j] == 1){
//                    board[i][j] = 1;
//                }
//                if (flag[i][j] == -1){
//                    board[i][j] = 0;
//                }
//            }
//        }
//        for (int i = 0 ; i < m; i++){
//            for (int j = 0; j < n; j++){
//                System.out.print(board[i][j] + " ");
//            }
//            System.out.println();
//        }
//    }
    public void gameOfLife(int[][] board) {
        if (board.length == 0){
            return;
        }
        int m = board.length;
        int n = board[0].length;

        // 存储中间变化
        int[][] flag = new int[m][n];
        for (int i = 0; i < m; i++){
            for (int j = 0; j < n; j++){
                flag[i][j] = board[i][j];
            }
        }

        for (int i = 0; i < m; i++){
            for (int j = 0; j < n; j++){
                //记录该细胞八个方向的活细胞数量
                int cnt = 0;
                for (int k = 0; k < 8; k++){
                    int x = i + dx[k];
                    int y = j + dy[k];
                    if (x < 0 || x >= m || y < 0 || y >= n){
                        continue;
                    }
                    cnt += (board[x][y] & 1);
                }
                // 该细胞为活细胞
                if ((board[i][j] & 1) == 1){
                    // 情况1
                    if (cnt < 2){
                        flag[i][j] = 0;
                    }
                    else if (cnt <=3){
                        // 情况2
                        flag[i][j] = 1;
                    }else {
                        // 情况3
                        flag[i][j] = 0;
                    }
                }else {
                    //该细胞为死细胞
                    // 情况4
                    if (cnt == 3){
                        flag[i][j] = 1;
                    }

                }
            }
        }

        //  统一进行改变
        for (int i = 0 ; i < m; i++){
            for (int j = 0; j < n; j++){
                board[i][j] = flag[i][j];
            }
        }

    }

    public static void main(String[] args) {
        leetcode289 obj = new leetcode289();
        int[][] board = {
                {0,1,0},{0,0,1},{1,1,1},{0,0,0}
        };
        obj.gameOfLife(board);
    }

}

在jetson上对fastdeploy进行源码编译(完整版) 在大多数Linux发行版中,你可以使用包管理器安装Python开发包。根据jetpack的版本选择对应的推理库版本。在~/.bashrc中写入这三行。 阅读详情

相关推荐

在没有实验数据的情况下,如何高效快速发表高影响因子论文

最新基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法

glldxh的博客 371

289. 生命游戏

lc 289

duoyasong5907的博客 812

数据分析——员工离职预测

员工离职预测一. 题目描述二. 数据说明三. 步骤实现1.导入并查看2.数据探索性分析3.数据处理4.模型分析5.结果分析(1) 可视化的结果分析(2)特征选择结果分析(3)多模型交叉验证结果分析 一. 题目描述 员工是否准备离职是困扰用人单位的问题,其关系到单位业务的开展及新人员的招聘,及时的分析出有离职倾向的员工成为关键的因素。数据主要包括影响员工离职的各种因素(工资、出差、工作环境满意度、工作投入度、是否加班、是否升职、工资提升比例等)以及员工是否已经离职的对应记录。 二. 数据说明 数据分为训练数据

weixin_43925467的博客 1万+

LeetCode-289-生命游戏

我们可以按照要求,直接在矩阵进行原地修改。但是我们进行原地修改时需要考虑修改后的元素对后续的判断产生影响。因此我们可以使用中间状态-1和2来代表现有活细胞即将死亡和死亡细胞准备复活的两种特殊状态。并在最终遍历整个矩阵,将特殊状态修改为新时刻下的状态。

L.Wzz的博客 229

halcon 深度学习标注_Halcon deep learning之目标检测笔记(一)

设置输入输出的路径输入路径有两个,一个是图像路径HalconImageDir,一个是Json文件路径PillBagJsonFile。这两个参数用于后续在图像路径中读取coco文件。输出路径首先定义一个新的文件夹路径,用于存放样本和模型文件等数据。设置基于深度学习的目标检测模型的路径,该模型文件以.hdl结尾。设置样本数据文件夹ExampleDataDir:'detect_pills_data'数据...

weixin_27885313的博客 2698

在unity urp项目中 通过图片创建材质(透明光晕)

unity中通过图片创造材质(urp管道)

m0_49721415的博客 1537

leetcode289.生命游戏

根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;

m0_48723204的博客 412

零基础做AI漫剧:Kimi K2.5写本 + Flux生图 + Seedance 2.0动效的保姆级教程

很多零基础小伙伴想做AI漫剧,却被“写剧本、画分镜、做动效”三大难题劝退——不会写剧情、不会画插画、不会做动态,觉得门槛太高。其实不用慌!今天就给大家带来保姆级教程,全程用Kimi K2.5(写剧本)、Flux(生分镜图)、Seedance 2.0(做动效)三个工具,不用专业技能,不用手动绘画,零基础也能在1小时内做出1分钟完整AI漫剧,全程步骤拆解、示例齐全,跟着做就能出片!

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3033

(矩阵) 289. 生命游戏 ——【Leetcode每日一题】

难度:中等根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 即为 活细胞 (live),或 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 网格面板 的当前状态,返回下一个状态。提示:进阶:

weixin_43412762的博客 1389

最新Python爬虫实战(入门爬虫篇)——案例3:爬取二次元cos图片批量下载到本地(附上完整爬虫代码)

本次案例通过Python爬虫技术实现了二次元图片的批量下载。代码采用模块化设计,函数实现cookies的自动解析,简化了配置流程,涵盖“请求列表页→提取详情页URL→请求详情页→提取图片链接→保存图片”的完整流程,与豆瓣案例的核心逻辑和格式完全对齐。学习重点包括:抓包工具定位多层级数据源、正则表达式匹配复杂链接、模拟请求头绕过反爬机制、文件名安全处理及自动化文件管理。需要注意控制请求频率并遵守网站使用规范,适用于入门爬虫实践,帮助学习者掌握多层级页面爬取的核心逻辑。

努力让自己发光,对的人才能迎着光而来 14万+

180.在 Vue3 中使用 OpenLayers 实现多个多边形的绘制、编辑、删除与清空

【摘要】本文介绍如何在Vue3+TypeScript环境下使用OpenLayers实现多边形地图交互功能。通过Composition API封装核心逻辑,实现了多边形绘制、编辑、删除及清空等操作。关键技术包括:使用VectorLayer管理图形数据,Draw/Modify/Select交互控制,以及通过ref()管理交互状态。文中提供了完整代码示例,并解决了交互对象叠加问题,为开发GIS应用提供了基础模块。该方案支持扩展为数据库存储、后端交互等高级功能。

小彭的博客 769

【leetcode面试经典150题】38. 生命游戏(C++)

本题来自【leetcode面试经典150题】38. 生命游戏(C++)

m0_74172965的博客 639

如何解决Elsevier和IEEE期刊之间参考文献的转换问题

Elsevier期刊和IEEE旗下的期刊两者模版互相转换的时候,会发现Elsevier模版的参考文献是存放在.bib文件下的,然后在.tex文件中直接引用即可。3. 在IEEE的.tex文件中的\end{document}命令行之前,添加下面的这句话(ps:\bibliography{**}中的**名称即为.bib文件的名称)如何将Elsevier的参考文献快速的转成IEEE期刊可用的格式,是本博客需要解决的问题。2. 将下载好的.bib文件,上传到IEEE的latex文件中。

薰珞婷紫小亭子的博客 1675

LeetCode 每日一题 289. 生命游戏 详细题解 C++描述

LeetCode 每日一题 289. 生命游戏 2020.04.02 难度 中等 题目 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的...

一起加油 7241

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【每日一题-leetcode】289. 生命游戏

289. 生命游戏 生命游戏 难度中等234 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律: 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡; 如果活细胞周围八个位置有两个或三个活细胞,则该位置活

芝兰生于深谷,不以无人而不芳 689

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Java】力扣_每日一题_289.生命游戏_中等

题目链接:https://leetcode-cn.com/problems/game-of-life/ 题目描述 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位...

includei的博客 380

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java每日一题:LeetCode-289. 生命游戏

这是我做过的一个题,我把它分享给你们: 这是原文链接:https://leetcode-cn.com/problems/plus-one/ 如果感觉我做的还行的话,记得点赞。

xweiwxh的博客 328

【LeetCode】 289. Game of Life 生命游戏(Medium)(JAVA)每日一题

【LeetCode】 289. Game of Life 生命游戏(Medium)(JAVA) 题目地址: https://leetcode.com/problems/game-of-life/ 题目描述: According to the Wikipedia’s article: “The Game of Life, also known simply as Life, is a cellula...

qq_16927853的博客 264

[LeetCode每日1题][中等] 289. 生命游戏

文章目录题目模拟法(原地) 题目 289. 生命游戏 - 力扣(LeetCode) 模拟法(原地) 普通解法没什么难度,需要另开一个数组,O(mn)空间复杂度。原地算法:把之前死的后来活的,和之前活的后来死的标记一下,最后再处理一下即可。 class Solution { public: void gameOfLife(vector<vector<int>> &...

EvergIow的博客 303

Leetcode—289. 生命游戏【中等】

Leetcode—289. 生命游戏【中等】

Atticus的博客 918

每日两题leetcode - 136.只出现一次的数字 & 289.生命游戏

java script版 - 每日两题leetcode - 136.只出现一次的数字 & 289.生命游戏

cjn1997的博客 205

每日算法系列【LeetCode 289】生命游戏

题目描述 根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞具有一个初始状态 live(1)即为活细胞, 或 dead(0)即为死细胞。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律: ...

算法码上来 460

LeetCode-289. 生命游戏

生命游戏 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律: 如果活细胞周围八个位置的活细胞数少于两个,则该位...

奥利波德的魔法屋 189

[每日一题] 159. 生命游戏(编码、常规解法)

文章目录1. 题目来源2. 题目说明3. 题目解析方法一:编码+常规解法 1. 题目来源 链接:289. 生命游戏 来源:LeetCode 2. 题目说明 3. 题目解析 方法一:编码+常规解法 由于题目中要求用原地算法来解题,所以就不能新建一个相同大小的数组,那么只能更新原有数组。题目中要求所有的位置必须被同时更新,但在循环程序中还是一个位置一个位置更新的,当一个位置更新了,这个位置成为其他...

Y-puyu 的博客 526

你不得不看的leetcode常考题(四月份每日一题)——Python版本

四月的每日一题 1号——1111. 有效括号的嵌套深度相关题目:20. 有效的括号2号——289. 生命游戏3号——8. 字符串转换整数 (atoi)4号——42. 接雨水5号——460. LFU缓存6号——72. 编辑距离7号——面试题 01.07. 旋转矩阵8号——面试题13. 机器人的运动范围9号——22. 括号生成学习内容:回溯算法10号——151. 翻转字符串里的单词11号——887. 鸡蛋掉落12号——面试题 16.03. 交点13号——355. 设计推特14号——445. 两数相加 II..

chuxuezheerer的博客 672

【leetcode】【medium】【每日一题】289. Game of Life​​​​​​​

289. Game of Life According to theWikipedia's article: "TheGame of Life, also known simply asLife, is a cellular automaton devised by the British mathematician John Horton Conway in 1970." Given ...

lemonade13的博客 111
上一篇: [Leetcode每日一题]357. 统计各位数字都不同的数字个数
下一篇: [Leetcode每日一题]806. 写字符串需要的行数
Puppet__
博客等级 码龄10年 319粉丝 328原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值