1. 棋盘最短路径问题

题目描述:

题目描述:
假设以一个n*m的矩阵作为棋盘,每个棋位对应一个二维坐标 (x, y)。你有一颗棋子位于左上起点(0, 0),现在需要将其移动到右下底角 (n-1, m-1),棋子可以向相邻的上下左右位置移动,每个坐标最多只能经过一次。棋盘中散布着若干障碍,障碍物不能跨越,只能绕行,问是否存在到达右下底角的路线?若存在路线,输出所需的最少移动次数;若不存在,输出0。 Input 第一行三个正整数n,m和k,代表棋盘大小与障碍物个数  1< n、m < 100,  k < n*m 第二行至第k+1行,每行为两个整数x和y,代表k个障碍物的坐标。输入
输入三个正整数n,m和k,代表棋盘大小与障碍物个数  1< n、m < 100,  k < n*m
第二行至第k+1行,每行为两个整数x和y,代表k个障碍物的坐标。输出
输出从起点到终点的最短路径的长度,如果不存在,即输出0

代码:

import java.util.Arrays;
import java.util.Scanner;public class Main {public static int min = Integer.MAX_VALUE;public static boolean find = false;public static void main( String[] args ) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int k = sc.nextInt();//障碍boolean[][] go = new boolean[n][m];//棋盘boolean[][] visit = new boolean[n][m];//走过的痕迹//将所有的位置设置为truefor(int i=0;i<n;i++) {Arrays.fill(go[i], true);}//有棋子障碍处设置为falsefor(int i=0;i<k;i++) {int a = sc.nextInt();int b = sc.nextInt();go[a][b] = false;}findPath(0, 0, 0, visit, go, n - 1, m - 1);//如果找到了输出结果,没路输出0if(find) {System.out.println(min);}else {System.out.println(0);}}private static void findPath( int row , int col , int s, boolean[][] visit, boolean[][] go, int targetRow, int targetCol ) {if(row == targetRow && col == targetCol) {//到达目标位置find = true;if(s < min) {min = s;}return;}if(col < targetCol && !visit[row][col+1] && go[row][col+1]) { // 右visit[row][col+1] = true;findPath(row, col + 1, s + 1, visit, go, targetRow, targetCol);visit[row][col+1] = false;}if(row < targetRow && !visit[row+1][col] && go[row+1][col]) { // 下visit[row+1][col] = true;findPath(row + 1, col, s + 1, visit, go, targetRow, targetCol);visit[row+1][col] = false;}if(col > 0 && !visit[row][col-1] && go[row][col-1]) { // 左visit[row][col-1] = true;findPath(row, col - 1, s + 1, visit, go, targetRow, targetCol);visit[row][col-1] = false;}if(row > 0 && !visit[row-1][col] && go[row-1][col]) { // 上visit[row-1][col] = true;findPath(row - 1, col, s + 1, visit, go, targetRow, targetCol);visit[row-1][col] = false;}}
}

2. 笔记草稿

代码1,利用栈

import java.util.Scanner;
import java.util.Stack;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();String results = getRealContent(str);System.out.println(results);}public static String getRealContent(String str) {StringBuilder sb = new StringBuilder("");char flag = '(';Stack<Character> stack = new Stack<Character>();char[] chars = str.toCharArray();//遍历每个数组将其放入栈中for (int i = 0; i < chars.length; i++) {if (chars[i] =='(') {//入栈
                stack.push(chars[i]);}else if (chars[i] ==')') {//弹出和这个)对应的(以及他们中间的内容while(!stack.isEmpty() && stack.peek()!= flag){stack.pop();}stack.pop();}else if (chars[i] =='<') {//删除前面的一个内容if(!stack.empty() && stack.peek()!=flag){stack.pop();}}else{stack.push(chars[i]);}}while(!stack.empty()){sb.append(stack.pop());}return sb.reverse().toString();}
}

代码2,括号加减

import java.util.Scanner;public class Main {public static void main( String[] args ) {Scanner sc = new Scanner(System.in);String s = sc.next();String res = "";int count = 0, len = s.length();for(int i=0;i<len;i++) {char c = s.charAt(i);if(c == '(') {count ++;}else if(c == ')') {count --;}else if(c == '<') {if(res.length() > 0 && count == 0 && res.charAt(res.length() - 1) != ')') {res = res.substring(0, res.length() - 1);}}else if(count == 0) {res += c;}}System.out.println(res);}
}

3. 迷宫游戏

import java.util.*;
/*** 5* .#...* ..#S.* .E###* .....* .....*/
public class B {static int[][] d = {{-1, 0},{0, 1},{1, 0},{0, -1}};static int startX = 0;static int startY = 0;static int endX = 0;static int endY = 0;static Set<Integer> stepList = new HashSet<>();public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();in.nextLine();char[][] board = new char[n][n];for (int i = 0; i < n; i++) {String line = in.nextLine();for (int j = 0; j < n; j++) {board[i][j] = line.charAt(j);if (board[i][j] == 'S') {startX = i;startY = j;} else if (board[i][j] == 'E') {endX = i;endY = j;}}}shortestLength(board, n);if (stepList.size() == 0) {System.out.println(-1);return;}int minStep = Integer.MAX_VALUE;for (Integer integer : stepList) {if (integer < minStep) {minStep = integer;}}System.out.println(minStep);}private static void shortestLength(char[][] board, int n) {boolean[][] visited = new boolean[n][n];visited[startX][startY] = true;shortestLength(board, n, startX, startY, 0, visited);}private static void shortestLength(char[][] board, int n, int startX, int startY, int step, boolean[][] visited) {if (startX == endX && startY == endY) {stepList.add(step);return;}for (int i = 0; i < 4; i++) {int newX = startX + d[i][0];int newY = startY + d[i][1];if (newX < 0) {newX = n - 1;} else if (newX==n) {newX = 0;}if (newY <0) {newY = n-1;}else if (newY==n){newY = 0;}if (board[newX][newY] !='#' && !visited[newX][newY]) {visited[newX][newY] = true;shortestLength(board, n, newX, newY, step + 1, visited);visited[newX][newY] = false;}}}}

转载于:https://www.cnblogs.com/haimishasha/p/11459499.html

小红书:笔试题(棋盘最短路径,笔记本草稿栈,迷宫游戏)相关推荐

  1. 剑指Offer——小米+小红书笔试题+知识点总结

    #剑指Offer--小米+小红书笔试题+知识点总结 ##情景回顾 时间:2016.9.23 19:00-21:00 2016.9.24 15:00-17:00 地点:山东省网络环境智能计算技术重点实验 ...

  2. 【2020牛客网笔试整理】小红书笔试题

    薯队长写了一篇笔记草稿,请你帮忙输出最后内容. 1.输入字符包括,"(" , ")" 和 "<"和其他字符. 2.其他字符表示笔记内容 ...

  3. python笔试题奥特曼打怪兽_python文字小游戏——奥特曼大战小怪兽

    历时三天,辛辛苦苦,废寝忘食,呕心沥血之作!!! 这是一个我根据自己的想法做出来的一个模拟以前文字游戏的小游戏 里面的主要实现是:玩家通过控制台输入键盘指令来进行操作,存取档,输游戏名,地图移动并随机 ...

  4. 小红书2020校招数据分析笔试题卷四 解析

    小红书2020校招数据分析笔试题卷四 解析 单选题 多选题 填空题 简答题 题目来自小红书2020校招数据分析笔试题卷四 单选题 如果在小红书商城中某一商户给一产品定价,如果按照全网最低价500元定价 ...

  5. 2020年小红书校招数据分析笔试题

    今天给大家带来2020年小红书校招的数据分析笔试题的详解 1.如果在小红书商城中某一商户给一产品定价,如果按照全网最低价500元定价,那么客人就一定会选择在此购买:价格每增加1元,客人的流失的可能性就 ...

  6. 小红书2020校招前端笔试题卷三

    小红书2020校招前端笔试题卷三题目地址 第一题 第一题我做错了以为是选错误的 第二题 第三题 解: JS中的执行机制(setTimeout.setInterval.promise.宏任务.微任务), ...

  7. 小红书2020校招算法笔试题卷一

    小红书2020校招算法笔试题卷一 字符串倒序 薯队长带着小红薯参加密室逃脱团建游戏,首先遇到了反转游戏,小红薯们根据游戏提示收集了多个单词线索,并将单词按要求加一个空格组 成了句子,最终要求把句子按单 ...

  8. 小红书数据分析笔试题!

    小红书数据分析岗位试题  -- 第1题 --  1. 从含有N个元素的总体中抽取n个元素作为样本,使得总体中的每一个元素都有相同的机会(概率)被抽中,这样的抽样方式称为? A. 简单随机抽样 B. 分 ...

  9. 小红书2020校招测试开发后端笔试题卷一

    "记录一下做的小红书的笔试" 题目描述: 薯队长写了一篇笔记草稿,请你帮忙输出最后内容. 1.输入字符包括,"(" , ")" 和 &quo ...

最新文章

  1. Dell 原有PowerEdge 服务器型号获得通过 Red Hat Enterprise Linux 6 认证
  2. 解决Couldn't resolve host 'mirrorlist.centos.org
  3. socket select模型
  4. JavaScriptSerializer序列化和反序列化JSON:使用自定义JavaScriptConverter
  5. 利用Matlab优化工具箱求解旅行商最短路径问题
  6. 在matplotlib中改变tick(标签)的字体大小
  7. chrome浏览器隐藏地址栏_Chrome将隐藏地址栏的网址 这么做的原因是为了防止钓鱼网址...
  8. 「深度」千篇一律的智能音箱,为何它们就是对显示屏“不感冒”?
  9. 机械专业中的计算机应用系统,计算机在机械行业中的应用
  10. Vue2.0 新手入门 — 从环境搭建到发布
  11. 树莓派测试USB摄像头是否可用
  12. 劫持无处不在,如何应对镜像劫持?三大手段应对重定向
  13. 使用腾讯云部署war包
  14. 视频分类之 UCF-101 上的 CNN 方法详解
  15. 计算机启动后桌面上什么都没有,电脑开机后,桌面上什么都没有了?我怎么处理?好着急啊...
  16. c语言sqlserver数据库头文件,Mysql的C语言API进行数据库编程
  17. js给select下拉框赋值-通过jquery方法赋值;jqueryslideBox(jquery轮播);jquery获取当前输入框值、is函数、function($)含义
  18. 阿里云2019北京峰会之我见(商业篇)
  19. 【9502】子集问题
  20. 低压谐波滤波器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 谷歌推出 Kotlin 免费在线课程
  2. centos安装python3.5_CentOS 7安装Python3.5
  3. python gil锁_python--GIL锁
  4. python import 类如何捕获clrt c_Python3 与 C# 扩展之~基础衍生
  5. vue3 el-form表单验证 自定义校验
  6. antd中tooltip换行_ant design 中实现表格头部可删除和添加
  7. php随机访问文章,zblog PHP调用热门文章、随机文章和热评文章代码
  8. apache php 503,宝塔linux面板 apache网站访问报错503 Service Unavailable解决
  9. php request对象,PHP 中TP5 Request 请求对象的实例详解
  10. java 内存指针_java内存模型详解