华为OD机考真题--五子棋--带答案
2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新)
项目描述:
张兵和王武是五子棋迷,工作之余经常切磋棋艺。这不,这会儿又下起来了。走了一会儿,轮张兵了,对着一条线思考起来了,这条线上的棋子分布如下
用数组表示: -1 0 1 1 1 0 1 01 1
棋子分布说明:
1.-1代表白子,0代表空位,1 代表黑子
2.数组长度L,满足 1 < L < 40,且L为奇数
你得帮他写一个程序,算出最有利的出子位置。最有利定义
1.找到一个空位(0),用棋子(1/-1)填充该位置,可以使得当前子的最大连续长度变大
2.如果存在多个位置,返回最靠近中间的较小的那个坐标;
3.如果不存在可行位置,直接返回-1:
4.连续长度不能超过5个(五字棋约束)
输入描述:
第一行: 当前出子颜色
第二行: 当前的棋局状态
输出描述
1个整数,表示出子位置的数组下标
示例1
输入:
1
-1 0 1 1 1 0 1 0 1 -1 1
输出:
5
说明:
当前为黑子 (1),放置在下标为5的位置,黑子的最大连续长度,可以由3到5
示例2
输入:
-1
-1 0 1 1 1 0 1 0 1 -1 1
输出:
1
说明:
当前为白子,唯一可以放置的位置下标为1,白子的最大长度,由1变为2
示例3
输入:
1
0 0 0 0 1 0 0 0 0 1 0
输出:
5
说明:
可行的位置很多,5最接近中间的位置坐标
public class GoBang {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int chessPieces = Integer.parseInt(sc.nextLine());List<Integer> chessBoard = Arrays.stream(sc.nextLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList());insertPosition(chessPieces,chessBoard);}public static void insertPosition(int chessPieces, List<Integer> chessBoard){//找到空位List<Integer> blank = new LinkedList<>();for (int i = 0; i < chessBoard.size();i++){if (chessBoard.get(i) == 0){blank.add(i);}}//向前、向后遍历连续值(最大连续(靠近中间坐标),长度不超过5)index(blank,chessBoard,chessPieces);}public static void index(List<Integer> blank, List<Integer> chessBoard ,int chessPieces){int middle = chessBoard.size()/2;ChessInfo chess1 = new ChessInfo(-1,-1);for (int i = 0; i < blank.size(); i++){//空白位置插入棋子的连续个数int letf = blank.get(i) - 1;int right = blank.get(i) + 1;int count = 1;Boolean end = true;while (end && letf >= 0 && right <= chessBoard.size() -1){//向前位置遍历if (chessBoard.get(letf) == chessPieces){letf--;count++;continue;}else if (chessBoard.get(right) == chessPieces){//向后遍历right++;count++;continue;}end = false;}//保留最合适的位置 比较连续值,比较离中间位置最近if (chess1.count < count && count <= 5){chess1.count = count;chess1.index = blank.get(i);} else if (chess1.count == count && count <= 5) {if (Math.abs(chess1.index - middle) > Math.abs(blank.get(i) - middle)){chess1.index = blank.get(i);}}}System.out.println(chess1.index);}@Datastatic class ChessInfo{int count;int index;public ChessInfo(int count, int index) {this.count = count;this.index = index;}}
}
相关文章:
华为OD机考真题--五子棋--带答案
2023华为OD统一考试(AB卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) 项目描述: 张兵和王武是五子棋迷,工作之余经常切磋棋艺。这不,这…...
把网站改为HTTPS访问方法
HTTPS是使用TSL/SSL加密超文本传输协议的扩展,用于跨网络的安全传输。网站更改为HTTPS,直接在网站形象上可以得到提升,更重要的是您的网站肯定会在排名和提升方面受益。机密信息的交换需要受到保护,以阻止未经授权的访问。 加密&a…...
【BASH】回顾与知识点梳理(四)
【BASH】回顾与知识点梳理 四 四. Bash Shell 的操作环境4.1 路径与指令搜寻顺序4.2 bash 的进站与欢迎讯息: /etc/issue, /etc/motd4.3 bash 的环境配置文件login与non-login shell/etc/profile (login shell 才会读)~/.bash_profile (login shell 才会读)source &…...
阿里云安全组设置
简介 云主机安全组必须打开如下端口: ssh:22http:80https:443ftp:21、20000~30000 阿里云安全组端口开放教程 腾讯云安全组端口开放教程 华为云安全组端口开放教程...
QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 终篇
QT图形视图系统 - 终篇 接上一篇,我们需要继续完成以下的效果; 先上个效果图: 修改背景,使之整体适配 上一篇我们绘制了标尺,并且我们修改了放大缩小和对应的背景,整体看来,我们的滚动条会和…...
代码随想录算法训练营第六十天|单调栈part03|● 84.柱状图中最大的矩形
84.柱状图中最大的矩形 Largest Rectangle in Histogram - LeetCode 单调栈这几题没过脑,感觉一团浆糊,要重新看一下 class Solution {public int largestRectangleArea(int[] heights) {Stack<Integer> stack new Stack<>();int[] newHeig…...
TCP的三次握手四次挥手
TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。 四次挥手&a…...
xml的学习笔记
学习视频:093-尚硅谷-xml-什么是XML以及它的作用_哔哩哔哩_bilibili 目录 XML简介 XML的作用 XML语法 1.文档声明 2.xml注释 3.元素标签 4.xml属性 5.语法规则 1.所有xml元素都须有关闭标签(也就是闭合) 2.xml 标签对大小写敏感 3.xml必须正确的嵌套 4…...
大数据之Hadoop(一)
目录 一、准备三台服务器 二、虚拟机间配置免密登录 三、安装JDK 四、关闭防火墙 五、关闭安全模块SELinux 六、修改时区和自动时间同步 一、准备三台服务器 我们先准备三台服务器,可以通过虚拟机的方式创建,也可以选择云服务器。 关于如何创建虚…...
Ubuntu安装git
使用 apt-get install git 安装git 报错: 这个错误信息通常表示您的系统上没有可用的 git 软件包。这可能是因为您的软件源列表中没有包含 git 软件包所在的软件源,或者您的软件源列表已经过期。 解决: 如果您使用的是 Ubuntu 或类似…...
[迁移学习]领域泛化
一、概念 相较于领域适应,领域泛化(Domain generalization)最显著的区别在于训练过程中不能访问测试集。 领域泛化的损失函数一般可以描述为以下形式: 该式分为三项:第一项表示各训练集权重的线性组合,其中π为使该项最小的系数&a…...
240. 搜索二维矩阵 II
240. 搜索二维矩阵 II 原题链接:完成情况:解题思路:参考代码: 原题链接: 240. 搜索二维矩阵 II https://leetcode.cn/problems/search-a-2d-matrix-ii/description/ 完成情况: 解题思路: 从…...
【Linux:线程池】
文章目录 1 线程池概念2 第一个版本的线程池3 第二个版本的线程池4 第三个版本的线程池5 STL中的容器以及智能指针的线程安全问题6 其他常见的各种锁7 读者写者问题(了解) 1 线程池概念 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而…...
跨境多商户中日韩英多语言商城搭建(PC+小程序+H5),搭建方案
随着全球化的推进,跨境电商正变得越来越普遍。在本文中,我们将介绍跨境电商系统开发中多语言商城独立站的部署搭建方案。 准备工作 在开始部署搭建之前,需要准备以下环境: 服务器,确保服务器具备足够的性能和稳定性。 …...
使用标准库版本编写LED闪烁
1、在STM32CubeMX中创建一个新的工程,选择STM32F103VCT6作为目标设备,并配置好所需的引脚和时钟设置。将需要用于LED连接的GPIO引脚设置为输出模式。 2、在生成代码后,打开工程目录,在Src文件夹中创建一个新的main.c文件。 3、在…...
【CDC】跨时钟域处理方法总结一
文章目录 一、概述1.异步时序2.亚稳态与建立保持时间 二、跨时钟域处理1.控制信号的跨时钟域处理(单bit数据)a.慢时钟域到快时钟域b.快时钟域到慢时钟域握手“扩宽”快时钟域脉冲时钟停止法窄脉冲捕捉电路 2.数据信号的跨时钟域处理(多bit数据…...
【Linux】创建分区后没有识别到分区盘?
如果在使用fdisk创建分区后明明输入p可以看到新建分区,但是lsblk查看的时候没有该分区,系统可能没有识别,你需要手动重新加载一下分区。 partprobe命令 partprobe命令用于重读分区表,将磁盘分区表变化信息通知内核,请求…...
W6100-EVB-PICO做DNS Client进行域名解析(四)
前言 在上一章节中我们用W6100-EVB-PICO通过dhcp获取ip地址(网关,子网掩码,dns服务器)等信息,给我们的开发板配置网络信息,成功的接入网络中,那么本章将教大家如何让我们的开发板进行DNS域名解…...
{Fixed} Android TV国内开机不会自动连接WIFI / 连接国内网络不会更新时间
引用: 悟空百科 使用usb adb、网络adb、串口敲以下命令修改安卓全局数据库 1、写入新的ntp服务器地址 adb shell settings put global ntp_server ntp.ntsc.ac.cn2、打开网络验 //如果你是Android R 以上的电视盒子 adb shell settings put global captive_portal_mode 1/…...
【ASP.NET MVC】数据到客户端(7)
前文ViewBag数据在服务端动态生成页面,也可以传到客户端浏览器供JS使用。 一、数据从控制器到客户端 前文介绍,动态生成页面时,控制器的数据 并没有传递到 客户端,而是给自己来用,生成View 再利用http传递到客户端浏…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
