1275.找出井字棋的获胜者(Java)

题目描述:

A 和 B 在一个 3 x 3 的网格上玩井字棋。
井字棋游戏的规则如下:
玩家轮流将棋子放在空方格 (" ") 上。
第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。
“X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。
只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。
如果所有方块都放满棋子(不为空),游戏也会结束。
游戏结束后,棋子无法再进行任何移动。
给你一个数组 moves,其中每个元素是大小为 2 的另一个数组(元素分别对应网格的行和列),它按照 A 和 B 的行动顺序(先 A 后 B)记录了两人各自的棋子位置。
如果游戏存在获胜者(A 或 B),就返回该游戏的获胜者;如果游戏以平局结束,则返回 “Draw”;如果仍会有行动(游戏未结束),则返回 “Pending”。
你可以假设 moves 都 有效(遵循井字棋规则),网格最初是空的,A 将先行动。

输入:

moves = [[0,0],[2,0],[1,1],[2,1],[2,2]]

输出:

“A”
解释:“A” 获胜,他总是先走。
"X " "X " "X " "X " "X "
" " -> " " -> " X " -> " X " -> " X "
" " "O " "O " "OO " “OOX”

代码实现:

//找到井字棋的获胜者
public class Main{public static void main(String[] args) {int[][] moves = new int[][]{{0, 0}, {2, 0}, {1, 1}, {2, 1}, {2, 2}};System.out.println(tictactoe(moves));//A}public static String tictactoe(int[][] moves) {int[][] plate = new int[3][3];//定义一个棋盘int flag = 1;//下棋顺序:1为A,0为B//规定A棋子为1,B棋子为2for (int i = 0; i < moves.length; i++) {//开始下棋int[] arr = moves[i];//每一步棋下的位置if (flag == 1) {//A下plate[arr[0]][arr[1]] = 1;//切换到B下flag = 0;} else {//B下plate[arr[0]][arr[1]] = 2;//切换到A下flag = 1;}}//判定胜负if (whoIsWinner(plate, 1)) {//如果A胜return "A";} else if (whoIsWinner(plate, 2)) {//B胜return "B";} else {//要么是平局 要么还未结束//先判定是否结束for (int i = 0; i < plate.length; i++) {for (int j = 0; j < plate[i].length; j++) {if (plate[i][j] == 0) {return "Pending";//还未结束}}}}//剩下的情况就是平局return "Draw";}/*** 判定当前棋局有结果时的胜者** @param plate 棋局的二维数组* @param x     假定的胜者的棋子元素* @return 假定是否成立*/public static boolean whoIsWinner(int[][] plate, int x) {int flag = 1;//标记变量:x元素是胜者为1//1判断行for (int i = 0; i < plate.length; i++) {//每一行判断是重置标记变量flag = 1;for (int j = 0; j < plate[i].length; j++) {//排成一行的情况if (plate[i][j] != x) {flag = 0;break;}}//出现一行一致时,则直接跳出if (flag == 1) {return true;}}//2判断列for (int i = 0; i < plate.length; i++) {//每一列判断是重置标记变量flag = 1;for (int j = 0; j < plate[i].length; j++) {//排成一列的情况if (plate[j][i] != x) {flag = 0;break;}}//出现一列一致时,则直接返回if (flag == 1) {return true;}}flag = 1;//重置//3排成对角线的情况for (int i = 0; i < plate.length; i++) {//主对角if (plate[i][i] != x) {flag = 0;}}//如果主对角线上符合胜利规则,返回结果 反之重置变量if (flag == 1) {return true;} else {flag = 1;}//4排成反对角线的情况for (int i = plate.length - 1; i >= 0; i--) {//反对角if (plate[i][plate.length - i - 1] != x) {flag = 0;}}//判定反对角的结果return flag == 1;}
}

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

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

相关文章

FPGA_简单工程_状态机

一 理论 fpga是并行执行的&#xff0c;当处理需要顺序解决的事时&#xff0c;就要引入状态机。 状态机&#xff1a; 简写FSM&#xff0c;也称同步有限状态机。 分为&#xff1a;more型状态机&#xff0c;mealy型状态机。 功能&#xff1a;执行该事件&#xff0c;然后跳转到下…

相机图像质量研究(11)常见问题总结:光学结构对成像的影响--像差

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

Linux 36.2@Jetson Orin Nano之Hello AI World!

Linux 36.2Jetson Orin Nano之Hello AI World&#xff01; 1. 源由2. Hello AI World&#xff01;3. 步骤3.1 准备阶段3.2 获取代码3.3 Python环境3.4 重点环节3.5 软件配置3.6 PyTorch安装3.7 编译链接3.8 安装更新 4. 测试4.1 video-viewer4.2 detectnet4.3 演示命令 5. 参考…

【OrangePi Zero2 智能家居】阿里云人脸识别方案

一、接入阿里云 二、C语言调用阿里云人脸识别接口 三、System V消息队列和POSIX 消息队列 一、接入阿里云 在之前树莓派的人脸识别方案采用了翔云平台的方案去1V1上传比对两张人脸比对&#xff0c;这种方案是可行&#xff0c;可 以继续采用。但为了接触更多了云平台方案&…

互联网摸鱼日报(2024-02-09)

互联网摸鱼日报(2024-02-09) 博客园新闻 开启 LLMs 应用开发之门 | 新程序员 技术宅死磕云游戏&#xff0c;米哈游的10亿玩家梦 苹果发布开源 AI 模型 MGIE 全新宝马 5 系旅行车发布 iPhone 16 最新相机模组设计&#xff1a;垂直排列&#xff0c;凸起呈药丸形状 马斯克评…

课时19:全局变量_文件体系

2.3.2 文件体系 学习目标 这一节&#xff0c;我们从 变量文件、简单实践、小结 三个方面来学习。 变量文件 变量文件 在linux环境中&#xff0c;有很多目录下的文件都可以定制一些作用范围更广的变量&#xff0c;这些文件或文件所在的目录有&#xff1a;作用范围在制定的用…

跟着pink老师前端入门教程-day23

苏宁网首页案例制作 设置视口标签以及引入初始化样式 <meta name"viewport" content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"> <link rel"stylesheet" href"css/normaliz…

Mybatis是否支持延迟加载?

前言 随着互联网应用的不断发展&#xff0c;数据库访问成为了应用开发中的一个重要环节。在这个背景下&#xff0c;MyBatis作为一种优秀的持久层框架&#xff0c;提供了灵活的SQL映射配置和强大的功能&#xff0c;为开发者提供了便捷的数据库访问解决方案。本文将深入探讨MyBat…

(2024,街景生成,道路拓扑生成器,对象布局生成器,成分集成和天气生成)Text2Street:街景的可控文本到图像生成

公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; Text2Street: Controllable Text-to-image Generation for Street Views 目录 0. 摘要 2. 相关工作 3. 方法 3.1. 概述 3.2. 车道感知的道…

如何将 Hexo 部署到 GitHub Pages

引言 在数字时代&#xff0c;拥有个人博客是展示自己想法、分享知识和技能的绝佳方式。Hexo 是一个基于 Node.js 的静态博客生成器&#xff0c;它结合了简洁性和功能性&#xff0c;让我们可以轻松地建立并维护一个博客。而 GitHub Pages 提供了一个免费的平台来托管这些静态网站…

【java】简单的Java语言控制台程序

一、用于文本文件处理的Java语言控制台程序示例 以下是一份简单的Java语言控制台程序示例&#xff0c;用于文本文件的处理。本例中我们将会创建一个程序&#xff0c;它会读取一个文本文件&#xff0c;显示其内容&#xff0c;并且对内容进行计数&#xff0c;然后将结果输出到控…

vue3跨组件(多组件)通信:事件总线【Event Bus】

★推荐方案&#xff1a;使用 events npm库&#xff1b; 可用范围&#xff1a;vue、react、angular等任何框架都可使用&#xff1b;且使用方式完全一致&#xff1b; 本文仅介绍、讲解对web页面端项目的常用API&#xff1b;通过events实现事件总线功能&#xff1b; event库概述&a…

交易之路:从无知到有知的五个阶段

交易是易学的&#xff0c;它的操作很直观&#xff0c;也是复杂的&#xff0c;它的价格很玄妙。在金融行业日益壮大的背景下&#xff0c;新人辈出&#xff0c;而弱者则逐渐退出。市场生态在不断变化&#xff0c;我们每个人在交易之路上所经历的种种&#xff0c;既清晰可见又模糊…

Flask实现异步调用sqlalchemy的模型类

事情是这样的&#xff0c;我这边需要在一次请求里面&#xff0c;搞一个异步不阻碍的任务&#xff0c;来执行耗时的操作。 一开始&#xff0c;我准备写的代码是这样的&#xff1a; from flask import Flask import time from concurrent.futures import ThreadPoolExecutorexec…

基于opencv-python模板匹配的银行卡号识别(附源码)

目录 介绍 数字模板处理 银行卡图片处理 导入数字模板 模板匹配及结果 介绍 我们有若干个银行卡图片和一个数字模板图片&#xff0c;如下图 我们的目的就是通过对银行卡图片进行一系列图像操作使得我们可以用这个数字模板检测出银行卡号。 数字模板处理 首先我们先对数…

WPF DispatcherTimer用法

System.Windows.Threading.DispatcherTimer 类主要用于WPF应用程序中进行周期性任务调度&#xff0c;并且保证这些任务在UI线程上执行。 这对于需要更新界面或与UI元素交互的定时操作非常有用&#xff0c;因为WPF的所有UI操作都必须在主线程&#xff08;即Dispatcher线程&…

【开源】SpringBoot框架开发桃花峪滑雪场租赁系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

实践:微服务版本升级步骤以及maven仓库相关概念

进行微服务开发的时候&#xff0c;上层服务依赖于下层的服务的api&#xff0c;比如适配属于上层服务&#xff0c;用户属于下层服务。 例子: 上层服务 <!--订单管理微服务api依赖--> <dependency><groupId>com.jn.server</groupId><artifactId>…

One time pad 图像加密MATLAB程序

使用一次加密的形式对图像进行加密。 采用异或的方式实现。 加密、解密结果如下: 程序代码如下: % 读取原始图像并显示 originalImage = imread(lena256.bmp); % 更换为你的图像文件名 subplot(1,3,1),imshow(originalImage); title(Original Image);% 生成与图像相同大…

低代码市场的未来展望:趋势、机遇与挑战

根据 Zoho 的一项新研究&#xff0c;低代码市场正处于成为主流的风口浪尖。该报告对全球 800 多名 IT 和业务领导者进行了调查&#xff0c;确定了推动其采用的几个因素。其中最重要的是提高应用程序的开发速度。 这一发现对企业领导者来说应该不足为奇。 客户、合作伙伴和员工…