牛客美团2024年春招第一场笔试【技术】解题

1.小美的平衡矩阵

小美拿到了一个n∗n的矩阵,其中每个元素是 0 或者 1。
小美认为一个矩形区域是完美的,当且仅当该区域内 0 的数量恰好等于 1 的数量。
现在,小美希望你回答有多少个i∗i的完美矩形区域。你需要回答1≤i≤n的所有答案

输出描述:
输出n行,第i行输出i*i的完美矩形区域的数量
例子:
输入例子:
4
1010
0101
1100
0011
输出例子:
0
7
0
1

1.1解题思路

1.1.1条件:

1.通过题目我们知道0和1相等才是完美矩形区域,所以我们只需求出矩阵的1的个数就可以了,这时我们可以想到前缀和(专门求矩阵的和)
2.第i行输出i*i的完美矩形区域的数量,得知到这个是确定矩阵边长大小,边长范围是1到n,边长奇数的一定不可能0和1相等

1.2思路

前缀和

  1. 构建前缀和矩阵:建立数组 S [ n ] [ m ] 来统计矩形 ( 1 , 1 ) 到(n,m) 中1 的数量左上矩阵,只用每次遍历矩形的左上定点,就可以确定整个矩形大小
  2. 然后统计该矩形中 01 的具体数量,判断是否相等,左上顶点 ( i , j ) 的矩阵,右下顶点即为 ( x , y ) ,其中 x = i + k − 1 , y = j + k − 1
  3. 字符 1 的数量即为 s [ x ] [ y ] − s [ i − 1 ] [ y ] − s [ x ] [ j − 1 ] + s [ i − 1 ] [ j − 1 ],字符 0 的数量为 k × k/ 2
    在这里插入图片描述
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    static int n = 201;
    static int sum[][] = new int[n][n];
    static int a [][] = new int[n][n];
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int row = in.nextInt();
        char[][] charArray = new char[row][];
        in.nextLine();
        // 循环读取每一行的字符串,并转换为字符数组
        for (int i = 0; i < row; i++) {
            String line = in.nextLine(); // 读取一行字符串
            charArray[i] =
                line.toCharArray(); // 将字符串转换为字符数组,并存储在二维数组中

        }
        for (int i = 0 ; i < row; i++) {
            for (int j = 0; j < row; j++) {
                a[i + 1][j + 1] = Integer.parseInt(Character.toString(charArray[i][j]));
                sum[i + 1][j + 1] = sum[i][j + 1] + sum[i + 1][j] + a[i + 1][j + 1] - sum[i][j];
            }
        }
        //k是边长
        for (int k = 1; k <= row; k++) {
            if ((k & 1) == 1) { // 当边长为奇数时
                System.out.println(0); // 字符 1的数量不可能等于字符 0的数量
                // 在循环中的话,这里应该是 continue; 
                continue;
            }
            int count = 0;
            for (int i = 1; i + k - 1 <= row ; i++ ) {
                for (int j = 1; j + k - 1 <= row ; j++) {
                    int x = i + k - 1;
                    int y = j + k - 1;
                    //核心部分
                    if (sum[x][y] - sum[i - 1][y] - sum[x][j - 1] + sum[i - 1][j - 1] ==
                            (k * k / 2)  ) {
                        count++;
                    }
                }
            }
            System.out.println(count);
        }

    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实现优先队列——C++

目录 1.优先队列的类模板 2.仿函数的讲解 3.成员变量 4.构造函数 5。判空&#xff0c;返回size&#xff0c;返回队头 6.插入 7.删除 1.优先队列的类模板 我们先通过模板来进行初步了解 由上图可知&#xff0c;我们的模板里有三个参数&#xff0c;第一个参数自然就是你要存储的数…

ServiceNow 研究:通过RAG减少结构化输出中的幻觉

论文地址&#xff1a;https://arxiv.org/pdf/2404.08189 原文地址&#xff1a;rag-hallucination-structure-research-by-servicenow 在灾难性遗忘和模型漂移中&#xff0c;幻觉仍然是一个挑战。 2024 年 4 月 18 日 灾难性遗忘&#xff1a; 这是在序列学习或连续学习环境中出现…

工业光源-环形光源-特点

◆高密度LED排列&#xff0c;科学的结构设计&#xff1b; ◆从360方向照射&#xff0c;消除阴影&#xff1b; ◆中间开孔&#xff0c;使光源与相机镜头完美契合&#xff1a; ◆多角度可选&#xff0c;可适应不同工作距离的应用&#xff1b; ◆可选配漫射板&#xff0c;使光线均…

C++算法之sort

sort默认排序方式为从小到大 vector<int> v{3,2,6,1,-2};sort(v.begin(),v.end());for(int i0;i<v.size();i){cout<<v[i]<<" ";}想要sort从大到小排序&#xff1a; 1.是自定义cmp 2.使用自带的函数&#xff1a;

Redis__事务

文章目录 &#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a;Redis__事务 ⏱️ 创作时间&#xff1a;2024年05月02日 ———————————————— 这里写目录标题 文章目…

【Web】CTFSHOW 中期测评刷题记录(1)

目录 web486 web487 web488 web489 web490 web491 web492 web493 web494 web495 web496 web497 web498 web499 web500 web501 web502 web503 web505 web506 web507 web508 web509 web510 web486 扫目录 初始界面尝试文件包含index.php&am…

WSL2连接Windows主机的Mysql

文章目录 需求查看主机IP防火墙设置Mysql设置允许远程连接WSL2连接Mysql 需求 在WSL2&#xff08;本机Ubuntu20.04&#xff09;运行的程序需要将数据写入到本机的Mysql服务器中 查看主机IP 两种办法&#xff1a; Windows主机输入 ipconfig&#xff0c;找到带有WSL后缀的部分…

C 语言笔记:字符串处理函数

一、获取字符串长度函数 头文件&#xff1a;#include <string.h> 函数定义&#xff1a;size_t strlen(const char *s); 函数功能&#xff1a; 测字符指针 s 指向的字符串中字符的个数&#xff0c;不包括’\0’ 返回值&#xff1a;字符串中字符个数 #include <stdio.…

不坑盒子激活码免费领取

不坑盒子的一些新出来的大功能&#xff0c;都需要账号有Pro权限才能使用了。 关键是这些功能还很强大呢&#xff01;不用还不行&#xff01; 今天发现一个可以免费领不坑盒子Pro激活码的方法&#xff1a; 扫码进去后&#xff0c;就能看到激活码了&#xff1a; 复制激活码&…

基于alpha shapes的边缘点提取(matlab)

1、原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点&#xff0c;可快速准确提取边界点。如下图所示&#xff0c;对于任意形状的平面点云&#xff0c;若一个半径为a的圆&#xff0c;绕其进行滚动&…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt+hadoop + redis 医院就诊系统 设计与实现

一.项目介绍 前端&#xff1a;患者注册 、登录、查看首页、医生排班、药品信息、预约挂号、就诊记录、电子病历、处方开药、我的收藏 后端分为&#xff1a; 医生登录&#xff1a;查看当前排班信息、查看患者的挂号情况、设置患者就诊记录、电子病历、给患者开药和个人信息维护 …

安装部署大语言模型 | 通义千问

下载安装 进入ollama的仓库下载 「 qwen 7b 」 libraryGet up and running with large language models.https://ollama.com/library查找阿里的 「 qwen 」 根据自己的电脑配置情况&#xff0c;选择合适的模型 总体来说&#xff0c;模型是越大&#xff0c;效果越好&#xff0c…

Jammy@Jetson Orin Nano - Tensorflow GPU版本安装

JammyJetson Orin Nano - Tensorflow GPU版本安装 1. 源由2. 问题2.1 Tensorflow跑以下示例代码的时候&#xff0c;发现jtop中6个CPU占用率都跑满了。2.2 Jetson Orin Nano运行Tensorflow示例结果不一致 3. 分析3.1 当前版本Tensorflow 2.16.13.2 GPU版本二进制安装3.3 GPU版本…

Nginx深度解析:核心特性、应用场景与全局、events、http等全面配置指南

Nginx是一款高性能的Web服务器与反向代理服务器软件&#xff0c;以其高并发处理能力、低内存消耗和反向代理负载均衡功能闻名。它通过事件驱动、异步非阻塞I/O模型&#xff0c;实现了极高的效率和稳定性&#xff0c;广泛应用于网站部署、API代理、静态资源服务及微服务架构中&a…

边沿JK触发器

边沿JK触发器 电路组成 & 逻辑符号 工作原理 Q n 1 D Q^{n1}D Qn1D J Q n ‾ K Q n ‾ \overline{\overline{JQ^n}KQ^n} JQn​KQn​ ( J Q n ) ( K ‾ Q n ‾ ) (JQ^n)(\overline{K}\overline{Q^n}) (JQn)(KQn​) J K ‾ J Q n ‾ K ‾ Q n Q n ‾ Q n J\over…

《HCIP-openEuler实验指导手册》1.6 Apache静态资源配置(目录访问)

知识点 常用用途&#xff1a; 软件仓库镜像及提供下载服务&#xff1a; 配置步骤 删除网站主目录中的文件&#xff08;本实验机目录为/home/source ip为192.168.12.137 端口为81&#xff09; cd /home/source rm -rf *在主目录中新建6个文件夹如下图 mkdir test{1..6}新建…

Eclipse 开创性地集成 Neon Stack,将 EVM 兼容性带到 SVM 网络

2024年5月2日&#xff0c;全球——在塑造区块链网络的战略联盟的过程中&#xff0c;Eclipse 通过集成 Neon EVM 核心团队开发的技术堆栈 Neon Stack&#xff0c;成为首个打破 EVM-SVM 兼容性障碍的生态。 Eclipse 旨在通过结合以太坊和 Solana 的最佳特性&#xff0c;来重构区…

SpringBoot-@Transactional注解失效

Transactional注解失效 Transactional失效场景 以下是一些常见导致Transactional注解失效的场景&#xff0c;配合相应的Java代码演示&#xff1a; 1、方法修饰符非公开&#xff08;非public&#xff09; Transactional注解失效的原因在于Spring事务管理器如何实现对事务的代…

LeetCode135:分发糖果

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回需…

Java -- (part20)

一.Map集合 1.概述 双列集合的顶级接口 2.实现类 HashMap 特点: a.key唯一,value可重复->如果key重复了,会发生value覆盖 b.无序 c.无索引 d.线程不安全 e.可以存null键null值 数据结构: 哈希表 方法: LinkedHashMap 特点: a.key唯一,value可重复->如果ke…