当前位置: 首页 > news >正文

L1-044 稳赢(15分)

题目信息

项目内容
题目编号L1-044
题目名称稳赢
分数15分
作者陈越
单位浙江大学

题目描述

大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如下:

  • 锤子(ChuiZi) 赢 剪刀(JianDao)
  • 剪刀(JianDao) 赢 布(Bu)
  • 布(Bu) 赢 锤子(ChuiZi)

现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。


解题思路

本题需要模拟"锤子剪刀布"游戏,并按照规则输出稳赢的招式,同时每隔K次输出一个平局。

核心逻辑:

  1. 建立手势之间的胜负关系映射
  2. 维护当前计数器和平局间隔K
  3. 当计数器达到K时,输出平局(即与对方相同的手势),并重置计数器
  4. 否则输出稳赢的手势(克制对方的手势)

克制关系:

  • 对方出锤子 → 我出布(布赢锤子)
  • 对方出剪刀 → 我出锤子(锤子赢剪刀)
  • 对方出布 → 我出剪刀(剪刀赢布)

Java实现

import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int K = scanner.nextInt(); // 平局间隔次数 // 记录已经输出的次数(不含平局) int count = 0; while (scanner.hasNext()) { String input = scanner.next(); if (input.equals("End")) { break; } count++; if (count % (K + 1) == 0) { // 平局:输出与对方相同的手势 System.out.println(input); } else { // 输出稳赢的手势 System.out.println(getWinGesture(input)); } } scanner.close(); } // 获取克制对方手势的稳赢手势 private static String getWinGesture(String opponent) { switch (opponent) { case "ChuiZi": return "Bu"; // 布赢锤子 case "JianDao": return "ChuiZi"; // 锤子赢剪刀 case "Bu": return "JianDao"; // 剪刀赢布 default: return ""; } } }

Python实现

def main(): K = int(input()) # 平局间隔次数 count = 0 # 手势克制关系:对方手势 -> 稳赢手势 win_map = { 'ChuiZi': 'Bu', # 布赢锤子 'JianDao': 'ChuiZi', # 锤子赢剪刀 'Bu': 'JianDao' # 剪刀赢布 } while True: gesture = input() if gesture == 'End': break count += 1 if count % (K + 1) == 0: # 平局:输出与对方相同的手势 print(gesture) else: # 输出稳赢的手势 print(win_map[gesture]) if __name__ == '__main__': main()

运行验证

输入:

2 ChuiZi JianDao Bu JianDao Bu ChuiZi ChuiZi End

Java输出:

Bu ChuiZi Bu JianDao JianDao ChuiZi Bu

Python输出:

Bu ChuiZi Bu JianDao JianDao ChuiZi Bu

复杂度分析

  • 时间复杂度:O(N),其中N为输入的出招次数
  • 空间复杂度:O(1),只使用常数级别的额外空间

总结

本题是一道简单的模拟题,关键点在于:

  1. 正确理解克制关系并建立映射
  2. 理解每隔K次平局的规则(即每K+1次输出一次平局)
  3. 边界情况处理:平局时输出与对方相同的手势
http://www.cnnetsun.cn/news/1898026.html

相关文章:

  • 从理论到实践:信息量、码元与比特的深度解析及通信系统中的应用
  • SEPIC拓扑设计实战:从元件参数计算到PCB布局的完整指南
  • lingbot-depth-pretrain-vitl-14开源部署:镜像内软链机制㊸与双目录防御设计解析
  • 人工智能艺术新范式:忍者像素绘卷:天界画坊在AIGC领域的应用探索
  • 幻兽帕鲁词条修改(幻兽帕鲁改存档工具)
  • 百度网盘提取码智能获取:3分钟掌握零门槛资源解锁技巧
  • Win10 + MATLAB R2021a 环境下的 TrueTime2.0 工具箱安装与网络控制系统仿真实践
  • AirPodsDesktop开源方案:Windows用户的苹果耳机完整体验终极指南
  • 避开这些坑!用CycloneDDS连接宇树Go2机器人的ROS2配置心得
  • 优峰技术:光学可调滤波器在光通信测试中的核心应用与选型指南
  • Qwen3.5-9B-AWQ-4bit解析Matlab算法:实现代码翻译与性能优化
  • ros2 run命令完全指南:从基础格式到高级参数配置(以turtlesim为例)
  • 抖音下载神器:5分钟掌握批量无水印下载与智能管理
  • 黄山派LVGL8实战:用Gui Guider的MultiLanguage模板快速做个多语言Demo
  • 英飞凌Aurix2G TC3XX时钟树配置实战:从20MHz晶振到300MHz主频的MCAL保姆级教程
  • 万维钢:复利的真正秘密,不是利率,是时间
  • 描述性统计分析在企业AI应用调查中的实战指南
  • Eth-Trunk(链路聚合)实战:从原理到配置的深度解析
  • AIAgent多租户隔离不是选题——是生死线:基于17个金融/医疗客户落地案例的SLA保障型隔离架构白皮书
  • Oracle19c静默建库实战:如何用dbca.rsp模板快速生成生产级数据库?
  • 青岛制造行业ERP系统深度评测:用友T+cloud产品力解析
  • Microsoft Edge 浏览器下载文件时,提示【xxx可能会损害你的设备。是否仍要保留?】解决方案
  • CnOpenData A股上市公司公司章程公告数据
  • AIAgent元学习能力白皮书核心节选(SITS2026唯一授权中文首发,72小时后下线)
  • keepalived的高可用和负载均衡
  • 用8051单片机DIY呼吸灯:从硬件选型到代码调试全流程(附完整源码)
  • HsmsApplication 半导体行业SECS协议上位机系统功能说明
  • 深度优先遍历DFS:从入门到精通
  • 当你的 Agent 需要记住三个月前的对话
  • 从0手把手教你写AI Skill(附规范目录+可运行代码)