华硕编程竞赛11月JAVA专场 B题召唤精灵 题解
创始人
2024-03-26 12:00:20
0

作者主页:Designer 小郑
作者简介:软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者,在校期间参加PAT乙级考试获得满分,三年ACM竞赛经验,斩获国奖两项,省奖五项。热爱技术、专注业务、开放合作、乐于分享,期待你我共同成长!
主打方向:Vue、SpringBoot、微信小程序

题目链接:题目链接

在这里插入图片描述

题面:

小王来到了太空的精灵召唤基地,这里是太空小精灵的生产场所。

接着小张开始介绍这片基地,这是一片正方形的召唤阵,边长为 N(1 < N < 10000),每次精灵召唤任务由两名召唤师担任。

召唤第一个精灵时,必须在角落开始召唤(即正方形的四个角落之一),召唤 X + 1 个精灵时,X + 1 个精灵必须在第 X 个召唤精灵的四周(即上下左右),且每个精灵位只能存放一个精灵。

当某位召唤师无法再召唤精灵时,另外一位召唤师取得了胜利!

小王开始首轮召唤,请问小王可以获得胜利吗?若小王可以获胜,请输出 Yes,若不能获胜则输出 No

图片描述

引用说明:上面的图片来源于蓝桥云课。

知识点

  • Java 的条件语法
  • 基础博弈分析

在这里插入图片描述

初始代码

public class GMain {public static String doWork(int n) {//代码编辑区 开始return "Yes";//代码编辑区 结束}public static void main(String[] args) {//测试用例System.out.println((Objects.equals("No",doWork(2)) ? "【√正确】" : "【X错误】 ") + "召唤场边长为: 2,答案:" + doWork(2));System.out.println((Objects.equals("Yes",doWork(3)) ? "【√正确】" : "【X错误】")  + " 召唤场边长为: 3,答案:" + doWork(3));}
}

在这里插入图片描述

样例说明

输入数据是一个整数 N,代表召唤场的边长,小王和小张都非常了解游戏规则,当一人明知可赢但故意走错让对方赢的情况,无需考虑

游戏开始时,由小王首轮召唤。

若小王可以获胜,请输出 Yes,若不能获胜则输出 No

在这里插入图片描述

题解

考察对奇偶性博弈的理解,N*N的方格,走过的格子不能走,第一格在角落上,最后无路可走就算输,求最后谁赢。

先手下棋后,剩余精灵召唤位个数为 N * N -1,若 N * N -1 为偶数,则先手小王胜利,否则小张胜利。

因为奇数的平方是奇数,偶数的平方是偶数,所以题解可以简化为:

N 为奇数,先手小王胜利,反之小张胜利。

参考代码如下:

import java.util.Objects;public class GAns {public static String doWork(int n) {//代码编辑区 开始return (n&1) > 0 ? "Yes" : "No";//代码编辑区 结束}public static void main(String[] args) {//测试用例System.out.println((Objects.equals("No",doWork(2)) ? "【√正确】" : "【X错误】 ") + "召唤场边长为: 2,答案:" + doWork(2));System.out.println((Objects.equals("Yes",doWork(3)) ? "【√正确】" : "【X错误】")  + " 召唤场边长为: 3,答案:" + doWork(3));}
}

在这里插入图片描述

总结

要 AC 本题,必须学会奇偶性博弈的算法,从而通过本题。

在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...