【深度优先搜索】弹珠游戏
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]的值对状态的影响。
【深度优先搜索】弹珠游戏相关推荐
- < 每日算法 - Javascript解析:经典弹珠游戏 >
每日算法 - JavaScript解析:弹珠游戏 一.任务描述: > 示例一: >示例二 二.题意解析 三.解决方案: 往期内容
- 《Arduino开发实战指南:LabVIEW卷》6.6 基于Arduino的弹珠游戏
6.6 基于Arduino的弹珠游戏 6.6.1 实现的功能 本节将使用LabVIEW及Arduino设计实现一个简单的弹珠游戏.该弹珠游戏规则为,左右移动挡板,使弹珠在矩形区域内运动而不掉落到矩形区 ...
- P7395 弹珠游戏(2021 CoE-I C)
Description 描述 Alice 对弹珠游戏已经有些厌烦了,她经常在电脑上玩这个游戏.她之所以感到厌烦是因为在这个游戏上她已经是专家级别,她总是能够和电脑打成平手. Alice 创造了一款新的 ...
- PyGame弹珠游戏双人改良版
# _*_ coding:utf-8 _*_ import pygame from pygame.locals import * from sys import exit__author__ = 'a ...
- 使用Scratch制作项目《弹珠游戏》
不知道大家有没有听说过这样一句话,"80后玩弹珠,90后玩游戏,00后怎么消遣业余时间?不是王者就是吃鸡." 作为一名90后,我们对打弹珠在熟悉不过了,今天,我们就来了解以下如果使 ...
- ZZULIOJ 1790 弹珠游戏
1790: 弹珠游戏 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 25 Solved: 20 SubmitStatusWeb Board Desc ...
- unity弹珠游戏-虚拟现实期末大作业(附下载链接)
unity弹珠游戏 Unity版本 2020.2.22 unity期末大作业,就是发射弹珠,相同的几个碰到一起会消失,游戏开始有游戏说明界面,点击开始进入游戏 游戏详情如下动态图所示: https:/ ...
- 【YBT高效进阶】1基础算法/4深度优先搜索/2数独游戏
[YBT高效进阶]1基础算法/4深度优先搜索/2数独游戏 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 数独是一种传统益智游戏,你需要 ...
- LCCUP第三题弹珠游戏总结,附完整代码
LCCUP第三题弹珠游戏总结,附完整代码 if语句非必要不要将条件分段写,分段写可能会导致出现某些特殊情况时,代码出现莫名bug(这题我因为分段写导致dfs函数中途退出从而漏掉了某些结果) 写伪代码时 ...
最新文章
- jmeter在linux上运行
- 20155305乔磊2016-2017-2《Java程序设计》第四周学习总结
- hdu max sum
- mac 设置终端样式_如何将终端样式设置为freeCodeCamp或任何您想要的样式
- java程序的开发步骤为,开发与运行Java程序需要经过的三个主要步骤为: ( )、( )、( )...
- 百度搜索引擎关键字URL采集爬虫优化行业定投方案高效获得行业流量-笔记篇
- html入门的常见问题
- 线性代数之行列式(1) ——行列式的定义以及二阶行列式
- php扩展 zval_copy_ctor,Zend API:pval/zval 数据结构
- pycharm改变匹配括号的颜色
- C语言程序设计预备作业
- 【NLP】自然语言处理中常见的英文单词
- windows虚拟摄像头开发
- [Leetcode 393] UTF-8 Validation
- 1.5万倍超高回报率、融合盲盒玩法背后,NFT仍是巨鲸乐园
- 个人投资课 张潇雨_张潇雨·个人投资课笔记
- 微信小程序,安卓可以调接口,苹果调不了的解决方案
- System.Security.SecurityException Failed to negotiate HTTPS connection with server.fiddler.network
- matlab机器人工具箱学习
- 调用DLL命令后发现堆栈错误