每日OJ_牛客_五子棋(判断是否有赢)

目录

牛客_五子棋(判断是否有赢)

解析代码


牛客_五子棋(判断是否有赢)

五子棋__牛客网

题目:

用例输入:

....................
....................
....................
....................
......*.............
.......*............
........*...........
....++++.*..........
..........*.........
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
.......*............
......+*+++.........
.......*............
.......*............
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................

用例输出:

Yes
No

解析代码

        dir代表当前位置的8个方向,其中上下、左右、左上右下、右上左下为必须放在一起检测。

获取一个棋盘,按照行列检测棋盘中的每个位置,当拿到一个位置后,按照以下步骤操作:

  1. 以该位置为中心,依次检测该位置的上下、左右、左上右下、右上左下,比如左上
  2. 从该位置开始向上检测,找出连在一起的同种棋子个数,再向下检测同种棋子的个数并累计,注意在检测时,中心位置统计了两次,上下统计完时,需要给结果减去1
  3. 按照2统计完上下、左右、左上右下、右上左下各个方向,找出最大的同种棋子个数
  4. 检测3中统计出的最大同种棋子个数,如果大于等于5,输出YSE,否则取下一个位置继续1
  5. 如果所有的位置检测完,没有超过5个的相同棋子,则输出NO
#include <iostream>
#include <vector>
#include <string>
using namespace std;
#define N 20int count(vector<string> table, char ch, int x, int y)
{int maxc = 0;int dir[4][2][2] = { {{ -1,0 },{ 1,0 }},{{ 0,-1 },{ 0,1 }},{{ -1,-1 },{ 1,1 }},{{ -1,1 },{ 1,-1 }} };for (int i = 0; i < 4; ++i) // 四种方向{int c = 0;for (int j = 0; j < 2; ++j) // 两个小方向{int nx = x, ny = y;while (nx >= 0 && nx < N && ny >= 0 && ny < N && table[nx][ny] == ch){nx += dir[i][j][0];ny += dir[i][j][1];++c;}}maxc = (maxc > c ? maxc : c);}return maxc - 1; //统计两个方向(如横向的左右两个方向)的时候,当前棋子被计算了两次
}bool solve(vector<string> table)
{// 遍历棋谱,如果某个位置有棋子,再向该位置进行搜索for (int i = 0; i < N; ++i){for (int j = 0; j < N; ++j){if (table[i][j] == '*' || table[i][j] == '+')if (count(table, table[i][j], i, j) >= 5)return true; // 当某个位置有连在一起的棋子,结束搜索}}return false;
}int main()
{vector<string> table(N);while (cin >> table[0]){for (int i = 1; i < N; ++i){cin >> table[i];}cout << (solve(table) ? "Yes" : "No") << endl;}return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础闯关4

环境配置 我们来配置LlamaIndex实验环境&#xff0c;首先创建Python环境并安装必要的库&#xff1a; conda create -n llamaindex python3.10 conda activate llamaindex conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda11.7 -c pytorch -c nvid…

VBA数据库解决方案第十四讲:如何在数据库中动态删除和建立数据表

《VBA数据库解决方案》教程&#xff08;版权10090845&#xff09;是我推出的第二套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;是学完字典后的另一个专题讲解。数据库是数据处理的利器&#xff0c;教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…

Pixelmator Pro for Mac 专业图像处理软件【媲美PS的修图软件】

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件…

MySQL 使用C语言链接

mysql的基础&#xff0c;我们之前已经学过&#xff0c;后面我们只关心使用 要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;大家可以去官网下载 我们使用C接口库来进行连接 要正确使用&#xff0c;我们需要做一些准备工作&#xff1a; 保证mysql服务有…

python常用库学习-Matplotlib使用

文章目录 安装 Matplotlib导入库基本示例1. 绘制简单的线图2. 散点图3. 柱状图4. 直方图5. 子图 更多高级功能1. 自定义样式2. 文本和注释3. 保存图形 示例&#xff1a;使用 Matplotlib 绘制多个图表示例 1: 绘制多个线图示例 2: 绘制散点图和直方图 参考文献 Matplotlib 是 Py…

MySQL数据库安装(详细)—>Mariadb的安装(day21)

该网盘链接有效期为7天&#xff0c;有需要评论区扣我&#xff1a; 通过网盘分享的文件&#xff1a;mariadb-10.3.7-winx64.msi 链接: https://pan.baidu.com/s/1-r_w3NuP8amhIEedmTkWsQ?pwd2ua7 提取码: 2ua7 1 双击打开安装软件 本次安装的是mariaDB&#xff0c;双击打开mar…

移动UI:成就勋章页面该如何设计,用例子说明。

移动应用的UI成就勋章页面通常是一个展示用户在应用中取得成就和获得勋章的页面。这种页面通常用于激励用户参与应用的活动&#xff0c;增加用户的参与度和忠诚度。 UI设计成就勋章页面时&#xff0c;一般会包括以下元素和功能&#xff1a; 1. 勋章列表&#xff1a; 展示用户…

集成电路学习:什么是ARM先进精简指令集计算机

ARM&#xff1a;先进精简指令集计算机 ARM先进精简指令集计算机&#xff08;Advanced RISC Machine&#xff0c;简称ARM&#xff09;是一种基于精简指令集计算机&#xff08;RISC&#xff09;原则的计算机处理器架构&#xff0c;由英国的ARM公司开发。这种架构以其低功耗和高性…

git创建本地分支并track跟踪远程分支

git创建本地分支并track跟踪远程分支 查看本地分支与远程分支的映射关系&#xff1a; git branch -vv 查看远程都有什么分支&#xff1a; git branch -r 在本地自动新建一个xxx分支&#xff0c;且自动track跟踪远程的同名xxx分支&#xff1a; git checkout --track origin/xx…

《黑神话:悟空》背后的渲染技术解析

《黑神话&#xff1a;悟空》作为备受瞩目的国产单机游戏&#xff0c;承载了深厚的文化底蕴&#xff0c;其背后的渲染技术无疑是推动其视觉表现达到新高度的关键。这款游戏不仅融合了传统与创新的角色设计&#xff0c;还通过一系列前沿的图形渲染技术&#xff0c;为玩家带来了前…

写的一致性问题之双写模式

文章目录 1、先写mysql&#xff1a;mysql会回滚&#xff0c;而redis不会回滚2、先写redis&#xff1a; 1、先写mysql&#xff1a;mysql会回滚&#xff0c;而redis不会回滚 写入msql成功&#xff0c;写入redis也成功&#xff0c;但是后续事务提交失败&#xff0c;mysql会回滚&a…

遗传算法Github初学

遗传算法的理论是根据达尔文进化论而设计出来的算法&#xff1a;人类是朝着好的方向&#xff08;最优解&#xff09;进化&#xff0c;进化过程中&#xff0c;会自动选择优良基因&#xff0c;淘汰劣等基因 遗传算法&#xff08;genetic algorithm——GA&#xff09;是计算数学中…

记一次Linux安装Maven、Git并拉取SpringBoot代码打包

记一次Linux安装Maven、Git并拉取SpringBoot代码打包 前言一、现在我用的方案二、安装Git三、安装maven四、脚本编写五、idea中运行六、总结 前言 在Java后端开发中&#xff0c;我相信基本上都在用springboot开发&#xff0c;因为它的约定优于配置&#xff0c;自动配置&#x…

五,Spring Boot中的 Spring initializr 的使用

五&#xff0c;Spring Boot中的 Spring initializr 的使用 文章目录 五&#xff0c;Spring Boot中的 Spring initializr 的使用1. 方式1&#xff1a;IDEA创建2. 方式2&#xff1a;start.spring.io 创建3. 注意事项和细节4. 最后&#xff1a; 需要&#xff1a;使用 Spring initi…

html+css网页设计 合十文化2个页面

htmlcss网页设计 合十文化2个页面 ui还原度90% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 …

学习使用双指针

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;leetcode刷题 双指针&#xff0c;有时候是快慢指针的方式来进行题目&#xff0c; 有时候是同向双指针来完成题目&#xff08;这个也叫滑动窗口&#xff09;&#xff0c; 有时候是通过两个…

STM32(F103ZET6)第十九课:FreeRtos的移植和使用

目录 需求一、FreeRtos简介二、移植FreeRtos1.复制代码2.内存空间分配和内核相关接口3.FreeRtosConfig4.添加到工程中三、任务块操作1.任务四种状态2.创建任务过程 需求 1.将FreeRtos&#xff08;嵌入式实时操作系统&#xff09;移植到STM32中。 2.在该系统中实现任务的创建、…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#xff08;KNN分类器&#xff09; 文章目录 一、基本原理原理流程举个例子总结 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#x…

macos MacPort 包管理工具安装和使用

在macos v10.15版本中, xz, python等软件无法使用brew安装, 原因是brew对于旧版本的macos不再支持, 但是我们可以使用另外一个macos下的包管理工具来安装brew无法安装的软件, macport 是一个和brew类似的macos下的一个非常优秀的软件包安装管理工具. MacPort安装前提条件 安…

【qt踩坑】路径含中文导致的报错,以及 OpenGL的链接报错

​ 背景 本来是准备采用VSQt插件的方式来开发Qt的&#xff0c;但是学习过程中发现&#xff0c;这种模式还是没有直接用Qt Creator 开发来的方便&#xff0c;插件这种模式坑多&#xff0c;功能不完善。 不过在直接使用Qt Creator的时候也踩坑了&#xff1a; (最后发现&#x…