[算法很美打卡] 多维数组篇 (打卡第二天)

news2024/11/18 15:44:15

文章目录

  • Z形打印
  • 边界为1的最大子方阵

Z形打印

在这里插入图片描述

package 每日算法学习打卡.算法打卡.七月份.七月二十七号;

public class test1 {
    public static void main(String[] args) {
        int[][] matrix = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12},
        };
        print(matrix);
    }

    static void print(int[][] matrix) {
        int r = 0, m = matrix.length;
        int l = 0, n = matrix[0].length;
        boolean l2r = true;
        while (r < m && l < n) {
            if (l2r) {
                System.out.println(matrix[r][l] + " ");
                //如果在走上坡路
                if (r == 0 && l < n - 1) {
                    l2r = !l2r;
                    l++;
                    continue;
                    //如果已经走到末尾了,行号就进行减一操作
                } else if (r > 0 && l == n - 1) {
                    l2r = !l2r;
                    r++;
                    continue;
                    //其余的情况都是在走上坡路
                } else {
                    r--;
                    l++;
                }
            } else {
                //如果是在走下坡路
                System.out.println(matrix[r][l] + " ");
                //如果走到左边界的时候,就向下走一格
                if(l == 0 && r <m-1){
                    l2r = !l2r;
                    r++;
                    continue;
                }else if( r == m-1){
                    l2r = !l2r;
                    l++;
                    continue;
                }else{
                    r++;
                    l--;
                }
            }
        }
    }
}

边界为1的最大子方阵

在这里插入图片描述

package 每日算法学习打卡.算法打卡.七月份.七月二十七号;



    public class test2 {
        public static int solve(int[][] matrix, int N) {
            int n = N; // 阶数
            boolean flag = false;
            while (n > 0) {
                for (int i = 0; i < N; i++, flag = false) {
                    if (i + n > N)
                        break;
                    for (int j = 0; j < N; j++, flag = false) {
                        if (j + n > N)
                            break;
                        // 当前节点开始查看是否满足均为1
                        int r = i, c = j;
                        while (c < j + n) { // 往右走
                            if (matrix[r][c] == 0) {
                                flag = true;
                                break;
                            }
                            c++;
                        }
                        if (flag) {
                            continue;
                        }
                        c--; // 复原
                        while (r < i + n) { // 往下走
                            if (matrix[r][c] == 0) {
                                flag = true;
                                break;
                            }
                            r++;
                        }
                        if (flag) {
                            continue;
                        }
                        r--;
                        while (c >= j) { // 往左走
                            if (matrix[r][c] == 0) {
                                flag = true;
                                break;
                            }
                            c--;
                        }
                        if (flag) {
                            continue;
                        }
                        c++;
                        while (r >= i) { // 往上走
                            if (matrix[r][c] == 0) {
                                flag = true;
                                break;
                            }
                            r--;
                        }
                        if (flag) {
                            continue;
                        }
                        r++;
                        return n;
                    }
                }
                n--;
            }
            return n; // 全是0,直接返回
        }

        public static void main(String[] args) {
            int[][] matrix = {
                    {0, 1, 1, 1, 1},
                    {0, 1, 0, 0, 1},
                    {0, 1, 0, 0, 1},
                    {0, 1, 1, 1, 1},
                    {0, 1, 0, 1, 1}
            };
            int res = solve(matrix, 5);
            System.out.println("result: " + res);
        }
    }


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

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

相关文章

基于信用博弈的数据价格动态评估模型

纯纯的&#xff0c;共享出来了 目录 摘要 2 数据价格动态评估模型 2.1 数据产品定价策略 摘要 传统数据交易平台中&#xff0c;定价完全由平台把控&#xff0c;数据所有者不明确数据潜在价值&#xff0c;网络买卖双方信用缺失&#xff0c;导致数据交易中的数据价格难以评估…

HCIA实验二

实验要求&#xff1a; 1.R2为ISP&#xff0c;只能配置IP 2.R1-R2之间为HDLC封装 3.R2-R3之间为PPP封装&#xff0c;pap认证&#xff0c;R2为主认证方 4.R2-R4之间为PPP封装&#xff0c;chap认证&#xff0c;R2为主认证方 5.R1、R2、R3构建MGRE&#xff0c;仅R1的IP地址固定…

自动发推技巧解析:让你的推文营销更容易上热门

作为一家企业在推特上发帖的目的就是能让更多人看到&#xff0c;也就是被算法拾取&#xff0c;从而推荐给更多的人&#xff0c;那么就需要首先了解推特的算法是怎么样的&#xff0c;才能利用好它进行推特自动发推群发&#xff0c;这里推特群推王给大家剖析一二: 上热门指什么&a…

day43-Feedback Ui Design(反馈ui设计)

50 天学习 50 个项目 - HTMLCSS and JavaScript day43-Feedback Ui Design&#xff08;反馈ui设计&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&q…

数据库分库分表备份

#!/bin/sh #调用系统函数库 . /etc/init.d/functions #Define variables BACKUPDIR/backup/sort/ MYSQLUSERroot MYSQLPASSWDRedHat123 MYSQLCMD"mysql -u$MYSQLUSER -p$MYSQLPASSWD" MYSQLDUMP"mysqldump -u$MYSQLUSER -p$MYSQLPASSWD -x -F -R" DATABASE…

ORB-SLAM3 单目运行EuRoC数据集

使用ORB-SLAM3运行EuRoC数据集&#xff0c;EuRoC数据集是无人家拍摄的&#xff0c;比较精确。 数据集测试 1&#xff09;从官网下载Euroc数据集&#xff0c;ASL格式&#xff0c;http://projects.asl.ethz.ch/datasets/doku.php?idkmavvisualinertialdatasets &#xff08;2…

xrdp登录显示白屏且红色叉

如上图所示&#xff0c;xrdp登录出现了红色叉加白屏&#xff0c;这是因为不正常关闭导致&#xff0c;解决方法其实挺简单的 #进入/usr/tmp cd /usr/tmp #删除对应用户的kdecache-** 文件&#xff08;我这里使用的是kde桌面&#xff09;&#xff0c;例如删除ywj用户对应的文件 …

32.选择器

选择器 html部分 <div class"toggle-container"><input type"checkbox" id"good" class"toggle"><label for"good" class"label"><div class"ball"></div></label&…

126.【Redis - 快速开发使用版】

Redis 二刷 (一)、认识NoSQL 与 SQL1.NoSQL与SQL的区别 (二)、认识Redis1.Redis 特征2.Redis安装及启动的三种方式 (基于Window)(1).命令行配置文件 3.Redis 客户端(1).命令行客户端(2).Redis可视化客户端 4.Redis 数据结构(1).Redis 通用命令(2).String 类型(3).Redis 的Key层…

回答网友 网友嫌弃俺用SUM,不用Count

网友嫌弃俺用SUM&#xff0c;不用Count 。俺就举了这个例子。sum有时很方便&#xff0c;可以一个select 完成多个数据的统计。 declare t table(usercode varchar(20),sex varchar(1) ,age int ,intern int ,city varchar(20) ) insert t(usercode,sex,age,intern,city) value…

状态机实现N位按键消抖

状态机实现N位按键消抖 1、原理 利用状态机实现按键的消抖&#xff0c;具体的原理可参考 (50条消息) 基于FPGA的按键消抖_fpga 按键消抖_辣子鸡味的橘子的博客-CSDN博客 状态机简介&#xff1a; 状态机分类可以主要分为两类&#xff1a;moore和mealy 根据三段式状态机最后…

《MySQL45讲》笔记—一条SQL查询语句是如何执行的、一条SQL更新语句是如何执行的

整体架构 server层包括连接器、查询缓存、分析器、优化器、执行器&#xff1b;存储引擎层负责数据的存储和提取&#xff0c;支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB&#xff0c;它从MySQL 5.5.5版本开始成为了默认存储引擎&#xff0c;如果在…

python-16-线程池和进程池python并发编程

Python ThreadPoolExecutor线程池 线程池的基本原理是什么&#xff1f; 利用Python快速实现一个线程池&#xff0c;非常简单 Python并发编程专题 1 并发编程 1.1 并发编程概念 一、为什么要引入并发编程&#xff1f; 场景1&#xff1a;一个网络爬虫&#xff0c;按顺序爬取花…

在Windows server 2012上使用virtualBox运行CentOS7虚拟机,被强制休眠(二)

问题场景 本月7月10日处理了一个虚拟机被强制暂停的问题&#xff0c;详见&#xff1a;在Windows server 2012上使用virtualBox运行CentOS7虚拟机&#xff0c;被强制暂停当时是由于C盘存储空间不足&#xff0c;导致虚拟机被强制暂停&#xff0c;将虚拟机迁移后&#xff0c;问题…

哈工大计算机网络课程局域网详解之:交换机概念

哈工大计算机网络课程局域网详解之&#xff1a;交换机概念 文章目录 哈工大计算机网络课程局域网详解之&#xff1a;交换机概念以太网交换机&#xff08;switch&#xff09;交换机&#xff1a;多端口间同时传输交换机转发表&#xff1a;交换表交换机&#xff1a;自学习交换机互…

Spire.Office for.NET Crack

Spire.Office for.NET Crack Spire.Office for.NET是E-iceblue提供的企业级Office.NET API的组合。它包括Spire.Doc、Spire.XLS、Spire.Seadsheet、Spire.Presentation、Spire_PDF、Spire.DataExport、SpireOfficeViewer、Spire-PDFViewer、Spire.DocViewer、Spire.Barcode和Sp…

模板(简单介绍C++)

模板 引入模板函数模板概念语法函数模板的原理函数模板实列化隐式实例化显示实例化 模板参数匹配原则 类模板类模板的定义格式类模板的实列化 泛型编程补充知识 引入模板 当我们想实现一个通用的交换函数时&#xff0c;我们能否告诉编译器一个模子&#xff0c;让编译器根据不同…

基于Java+SpringBoot+vue前后端分离墙绘产品展示交易平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Ansible 自动化运维

目录 ansible 环境安装部署ansible 命令行模块inventory 主机清单 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可…

MySQL 之 Buffer Pool

一、innoDB设计缓冲池目的 避免频繁访问磁盘&#xff0c;提高数据库读写性能。&#xff08;作用与引用Cache三级缓存类似。&#xff09; 二、缓冲池工作模式 读取数据&#xff1a;当Buffer Pool存在目标数据&#xff0c;就直接返回给客户端&#xff0c;没有再磁盘取数据。 修改…