rust学习-记录第一个完成的rust算法题

news/2024/10/6 3:55:14/文章来源:https://www.cnblogs.com/caoke/p/18288434

给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c) 。棋盘上空格用 '.' 表示,白色格子用 'W' 表示,黑色格子用 'B' 表示。

游戏中每次操作步骤为:选择一个空格子,将它变成你正在执行的颜色(要么白色,要么黑色)。但是,合法 操作必须满足:涂色后这个格子是 好线段的一个端点 (好线段可以是水平的,竖直的或者是对角线)。

好线段 指的是一个包含 三个或者更多格子(包含端点格子)的线段,线段两个端点格子为 同一种颜色 ,且中间剩余格子的颜色都为 另一种颜色 (线段上不能有任何空格子)。你可以在下图找到好线段的例子:

给你两个整数 rMove 和 cMove 以及一个字符 color ,表示你正在执行操作的颜色(白或者黑),如果将格子 (rMove, cMove) 变成颜色 color 后,是一个 合法 操作,那么返回 true ,如果不是合法操作返回 false 。

 

示例 1:

输入:board = [[".",".",".","B",".",".",".","."],[".",".",".","W",".",".",".","."],[".",".",".","W",".",".",".","."],[".",".",".","W",".",".",".","."],["W","B","B",".","W","W","W","B"],[".",".",".","B",".",".",".","."],[".",".",".","B",".",".",".","."],[".",".",".","W",".",".",".","."]], rMove = 4, cMove = 3, color = "B"
输出:true
解释:'.','W' 和 'B' 分别用颜色蓝色,白色和黑色表示。格子 (rMove, cMove) 用 'X' 标记。
以选中格子为端点的两个好线段在上图中用红色矩形标注出来了。

示例 2:

输入:board = [[".",".",".",".",".",".",".","."],[".","B",".",".","W",".",".","."],[".",".","W",".",".",".",".","."],[".",".",".","W","B",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".","B","W",".","."],[".",".",".",".",".",".","W","."],[".",".",".",".",".",".",".","B"]], rMove = 4, cMove = 4, color = "W"
输出:false
解释:虽然选中格子涂色后,棋盘上产生了好线段,但选中格子是作为中间格子,没有产生以选中格子为端点的好线段。

 

提示:

  • board.length == board[r].length == 8
  • 0 <= rMove, cMove < 8
  • board[rMove][cMove] == '.'
  • color 要么是 'B' 要么是 'W' 。
impl Solution {pub fn check_move(board: Vec<Vec<char>>, r_move: i32, c_move: i32, color: char) -> bool {let pArr=[[1,0],[-1,0],[0,1],[0,-1],[1,-1],[1,1],[-1,1],[-1,-1]];let mut has=false;for [dx,dy] in pArr{let mut x=(r_move+dx) as usize;let mut y=(c_move+dy) as usize;let mut first=true;while x<8&&x>=0&&y<8&&y>=0{if first{first=false;if board[x][y]=='.'||board[x][y]==color{break;}}else{if board[x][y]=='.'{break;}else if board[x][y]==color{has=true;break}x+=dx as usize;y+=dy as usize;}}}return has;}
}

 

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

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

相关文章

Grafana+Loki+Promtail 日志监控

目录前置工作用户组(按需创建)GrafanaLokiLoki 配置文件Promtail配置文件配置数据源创建仪表盘添加查询项 前置工作Centos 7 关闭防火墙 (systemctl stop firewalld) 独立的用户组(可以不创建)用户组(按需创建) # 创建用户组 groupadd grafana # 新建一个家目录为`/home/graf…

source

进入题目右键源码发现一个假的flag base64解码啥也不是 目录扫描发现.git源码泄露,假的flag.txt下载.git进入目录 查看历史版本一一查看各个版本改动找到flag

cookies

进入题目,提示cookies伪造查看url发现filename为base64加密,发现参数line尝试查看index.php,base64加密对参数line进行遍历得到源码 error_reporting(0); $file=base64_decode(isset($_GET[filename])?$_GET[filename]:""); $line=isset($_GET[line])?intval($_…

成绩查询

进入题目猜测为sql注入 直接sqlmap一把梭 数据库表内容得到flag

秋名山车神

进入题目没刷新一次数字改变一次 直接上脚本 注意正则表达式得到flag

xxx二手交易市场

进入题目注册账号登陆后点击头像发现可以上传图片 上传正常图片bp抓包发现为jpeg类型且base64加密修改为php类型知道文件上传路径 蚁剑连接得到flag

《已解决》无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

原因: Python 环境未正确配置:可能你没有将 Python 添加到系统的环境变量中。 你需要手动将 Python 的安装目录(以及包含 pip.exe 的文件夹)添加到系统的环境变量 PATH 中。解决: 1. 找到python的安装目录 键盘按下 win键+R键, 输入cmd回车。 随后输入 where pythonwhe…

最新扣子(Coze)实战案例:图像流工具之空间风格化,完全免费教程

🧙‍♂️ 大家好,我是斜杠君,手把手教你搭建扣子AI应用。 📜 本教程是《AI应用开发系列教程之扣子(Coze)实战教程》,完全免费学习。 👀 免费扣子Coze教程地址:https://www.bzfree.com/如果想学习AI应用搭建,请关注公众号,及时获取最新免费教程。 上节课讲了人像风格…

认识终端和shell

【教程】在macOS上用VSCode写C++代码 4 认识终端和shell 内建程序与内建命令 打开终端,其实相当于打开了shell。shell 可以运行一些程序(例如 sayhello、 /bin/mkdir )。 shell自身也带着一些程序(二进制可执行文件),这些程序就叫内建程序。 特点:调用shell内建程序的时…

LVGL一键打包图片工具,全部图片打包成一个bin文件,支持nor flash XIP模式下直接访问数据显示

最近做工程项目,需要用到LVGL,但是搜了很长时间没有看到合适的图片打包工具,大多都是生成数组或者单个的bin文件,这样烧录到nor flash很麻烦 后来看到一篇博客,博主的想法与我类似,不过他后面部分就做的麻烦了,所以,我直接从头写了一个工具,他的博客地址:https://www…

mini-lsm通关笔记-字符相关操作

本文捋一下mini-lsm中的字符相关操作[u8] Vec<u8> Bytes Buf KeySlice KeyBytes[u8]和Vec<u8> 这两个是rust内置的数据类型。 [u8]: 切片本身并不拥有数据,而是引用了数据。它由一个指向数组开始处的指针和一个表示数组长度的计数器组成。[u8]类型通常写作&[u…

张高兴的 MicroPython 入门指南:(二)GPIO 的使用

目录什么是 GPIO使用方法使用微动开关点亮板载 LED硬件需求电路代码参考 什么是 GPIO GPIO 是 General Purpose Input Output 的缩写,即“通用输入输出”。 Raspberry Pi Pico 左右两侧各有一列 GPIO 引脚, Pico 通过这两列引脚进行一些硬件上的扩展,与传感器进行交互等等。…