LCP 63. 弹珠游戏

题意:从边界(不包含四个角)射入弹珠,遇到W或E转向,终点为‘O’,最多走num步,问所有符合题意的起点。

int dfs(x,y,d):从x,y走到'O',沿方向d,走的步数。

每次走一格相当于做一次选择,每次选择会对状态x,y,d有影响,

当走的格子是'.'时,d不变。当走的格子是'W'时,d=(d-1+4)%4 。当走的格子是'E'时,d=(d+1)%4

走过一个格子后,x+=dx[d],y+=dy[d]。

当不出界时继续走下去。

class Solution {int[]dx;int[]dy;int n;int m;int step;char[][]g;List<int[]>res;public int[][] ballGame(int num, String[] plate) {dx=new int[]{-1,0,1,0};dy=new int[]{0,1,0,-1};n=plate.length;m=plate[0].length();g=new char[n][m];res=new ArrayList<>();step=num;for(int i=0;i<n;i++){g[i]=plate[i].toCharArray();}for(int i=1;i<m-1;i++){if(g[0][i]=='.'&&dfs(0,i,2)<=step)res.add(new int[]{0,i});if(g[n-1][i]=='.'&&dfs(n-1,i,0)<=step)res.add(new int[]{n-1,i});}for(int i=1;i<n-1;i++){if(g[i][0]=='.'&&dfs(i,0,1)<=step)res.add(new int[]{i,0});if(g[i][m-1]=='.'&&dfs(i,m-1,3)<=step)res.add(new int[]{i,m-1});}int[][]ans=new int[res.size()][2];for(int i=0;i<res.size();i++){ans[i]=res.get(i);}return ans;}int dfs(int x,int y,int d){if(g[x][y]=='O')return 0;if(g[x][y]=='E')d=(d+1)%4;if(g[x][y]=='W')d=(d+3)%4;x+=dx[d];y+=dy[d];if(x>=0&&x<n&&y>=0&&y<m) return 1+dfs(x,y,d);return 0x3f3f3f3f;}
}

关键在于dfs的书写。

理解:g[x][y]的值对状态的影响。

【深度优先搜索】弹珠游戏相关推荐

  1. < 每日算法 - Javascript解析:经典弹珠游戏 >

    每日算法 - JavaScript解析:弹珠游戏 一.任务描述: > 示例一: >示例二 二.题意解析 三.解决方案: 往期内容

  2. 《Arduino开发实战指南:LabVIEW卷》6.6 基于Arduino的弹珠游戏

    6.6 基于Arduino的弹珠游戏 6.6.1 实现的功能 本节将使用LabVIEW及Arduino设计实现一个简单的弹珠游戏.该弹珠游戏规则为,左右移动挡板,使弹珠在矩形区域内运动而不掉落到矩形区 ...

  3. P7395 弹珠游戏(2021 CoE-I C)

    Description 描述 Alice 对弹珠游戏已经有些厌烦了,她经常在电脑上玩这个游戏.她之所以感到厌烦是因为在这个游戏上她已经是专家级别,她总是能够和电脑打成平手. Alice 创造了一款新的 ...

  4. PyGame弹珠游戏双人改良版

    # _*_ coding:utf-8 _*_ import pygame from pygame.locals import * from sys import exit__author__ = 'a ...

  5. 使用Scratch制作项目《弹珠游戏》

    不知道大家有没有听说过这样一句话,"80后玩弹珠,90后玩游戏,00后怎么消遣业余时间?不是王者就是吃鸡." 作为一名90后,我们对打弹珠在熟悉不过了,今天,我们就来了解以下如果使 ...

  6. ZZULIOJ 1790 弹珠游戏

    1790: 弹珠游戏 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 25  Solved: 20 SubmitStatusWeb Board Desc ...

  7. unity弹珠游戏-虚拟现实期末大作业(附下载链接)

    unity弹珠游戏 Unity版本 2020.2.22 unity期末大作业,就是发射弹珠,相同的几个碰到一起会消失,游戏开始有游戏说明界面,点击开始进入游戏 游戏详情如下动态图所示: https:/ ...

  8. 【YBT高效进阶】1基础算法/4深度优先搜索/2数独游戏

    [YBT高效进阶]1基础算法/4深度优先搜索/2数独游戏 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 数独是一种传统益智游戏,你需要 ...

  9. LCCUP第三题弹珠游戏总结,附完整代码

    LCCUP第三题弹珠游戏总结,附完整代码 if语句非必要不要将条件分段写,分段写可能会导致出现某些特殊情况时,代码出现莫名bug(这题我因为分段写导致dfs函数中途退出从而漏掉了某些结果) 写伪代码时 ...

最新文章

  1. jmeter在linux上运行
  2. 20155305乔磊2016-2017-2《Java程序设计》第四周学习总结
  3. hdu max sum
  4. mac 设置终端样式_如何将终端样式设置为freeCodeCamp或任何您想要的样式
  5. java程序的开发步骤为,开发与运行Java程序需要经过的三个主要步骤为: ( )、( )、( )...
  6. 百度搜索引擎关键字URL采集爬虫优化行业定投方案高效获得行业流量-笔记篇
  7. html入门的常见问题
  8. 线性代数之行列式(1) ——行列式的定义以及二阶行列式
  9. php扩展 zval_copy_ctor,Zend API:pval/zval 数据结构
  10. pycharm改变匹配括号的颜色
  11. C语言程序设计预备作业
  12. 【NLP】自然语言处理中常见的英文单词
  13. windows虚拟摄像头开发
  14. [Leetcode 393] UTF-8 Validation
  15. 1.5万倍超高回报率、融合盲盒玩法背后,NFT仍是巨鲸乐园
  16. 个人投资课 张潇雨_张潇雨·个人投资课笔记
  17. 微信小程序,安卓可以调接口,苹果调不了的解决方案
  18. System.Security.SecurityException Failed to negotiate HTTPS connection with server.fiddler.network
  19. matlab机器人工具箱学习
  20. 调用DLL命令后发现堆栈错误

热门文章

  1. 前端全栈大佬是如何使用javaScript实现一个无缝轮播(最终版)
  2. 测试结果类型为: ESTJ
  3. 时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)
  4. web前端就业怎么样
  5. 时针分针夹角公式与重合问题
  6. 一个 80 后失败创业者的告白
  7. ModelArts实现智能花卉识别笔记
  8. 6 Processes 下
  9. cypher语法 | Neo4j cypher增删查改
  10. 城市易涝点(隧道、涵洞)监测系统方案