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

leetcode付费题 353. 贪吃蛇游戏解题思路

贪吃蛇游戏试玩:https://patorjk.com/games/snake/

img

问题描述

设计一个贪吃蛇游戏,要求实现以下功能:

  • 初始化游戏:给定网格宽度、高度和食物位置序列
  • 移动操作:根据指令(上、下、左、右)移动蛇头
  • 规则:
    1. 蛇头碰到边界或自身身体时游戏结束(返回-1)
    2. 吃到食物时蛇身长度增加
    3. 未吃到食物时正常移动(蛇头前进,蛇尾收缩)
核心思路
  1. 网格坐标转换
    • 使用一维坐标表示位置:x + y * 宽度
    • 简化位置计算和存储(0 表示 (0,0),1 表示 (1,0) 等)
  2. 蛇身存储
    • 使用队列(LinkedList)存储蛇身位置
    • 队首(头部)是最早加入的位置(蛇尾)
    • 队尾(尾部)是最新加入的位置(蛇头)
  3. 移动处理
    • 根据方向更新蛇头坐标
    • 边界检查:超出网格边界立即结束游戏
    • 碰撞检测:通过位置队列判断是否撞到自身
  4. 食物机制
    • 按顺序检查当前食物是否被吃
    • 吃到食物:不移除蛇尾,蛇身增长
    • 未吃到食物:移除蛇尾,保持长度
关键算法步骤
  1. 初始化

    public SnakeGame(int width, int height, int[][] food) {this.W = width;  // 网格宽度this.H = height; // 网格高度this.FOOD = food; // 食物序列this.queue.offer(0); // 初始位置(0,0)
    }
    
  2. 移动操作

    public int move(String direction) {// 1. 更新蛇头坐标switch (direction.charAt(0)) {case 'U'

相关文章:

  • 2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版
  • 【技能拾遗】——家庭宽带单线复用布线与配置(移动2025版)
  • 计算机视觉与深度学习 | 基于Matlab的门禁指纹识别与人脸识别双系统实现
  • 关于TongWeb数据源兼容mysql驱动的注意事项
  • CSS专题之层叠上下文
  • 【前端】SPA v.s. MPA
  • vue3 基本语法 父子关系
  • 设计模式——装饰器设计模式(结构型)
  • HiveSQL语法全解析与实战指南
  • 【大模型部署】mac m1本地部署 ChatGLM3-6B 超详细教程
  • 跟单业务和量化交易业务所涉及到的设计模式
  • 性能优化 - 理论篇:性能优化的七类技术手段
  • C++旅行预算规划 全国信息素养大赛复赛决赛 C++小学/初中组 算法创意实践挑战赛 内部集训模拟题详细解析
  • C++ - STL #什么是STL #STL的版本 #闭源开源 #STL的六大组件
  • 题解:洛谷 P12672 「LAOI-8」近期我们注意到有网站混淆视听
  • Wireshark 使用教程:让抓包不再神秘
  • DeepSeek-R1-0528,官方的端午节特别献礼
  • Go语言中的布尔类型详解
  • 【算法】贪心算法
  • 深拷贝和浅拷贝
  • 相亲网站男人拉我做外汇/广点通投放平台
  • 自己做的网站服务器在哪里/怎么设计网站
  • 网站建设网上书店/网站搜索引擎优化方案
  • 国外最炫酷网站/青岛百度seo代理
  • 石龙网站建设/无锡网站建设
  • 网站主播/搜索引擎排名优化是什么意思