您的位置:首页 > 汽车 > 时评 > html网页框架代码实例_兴化网站开发_站长工具seo优化系统_8大营销工具指的是哪些

html网页框架代码实例_兴化网站开发_站长工具seo优化系统_8大营销工具指的是哪些

2024/12/26 18:24:35 来源:https://blog.csdn.net/2401_88859777/article/details/144282715  浏览:    关键词:html网页框架代码实例_兴化网站开发_站长工具seo优化系统_8大营销工具指的是哪些
html网页框架代码实例_兴化网站开发_站长工具seo优化系统_8大营销工具指的是哪些

问题背景

给定一个 8 × 8 8 \times 8 8×8 的棋盘,只有一个 白色的车,用字符 ‘R’ 表示。棋盘上还可能存在白色的象 ‘B’ 以及黑色的卒 ‘p’。空方块用字符 ‘.’ 表示。
车可以按水平或竖直方向(上,下,左,右)移动任意个方格直到它遇到另一个棋子或棋盘的边界。如果它能够在一次移动中移动到棋子的方格,则能够 吃掉 棋子。
注意:车不能穿过其它棋子,比如象和卒。这意味着如果有其它棋子挡住了路径,车就不能够吃掉棋子。
返回白车将能 吃掉卒的数量

数据约束

  • b o a r d . l e n g t h = 8 board.length = 8 board.length=8
  • b o a r d [ i ] . l e n g t h = 8 board[i].length = 8 board[i].length=8
  • b o a r d [ i ] [ j ] board[i][j] board[i][j]可以是 ‘R’,‘.’,‘B’ 或 ‘p’
  • 只有一个格子上存在 b o a r d [ i ] [ j ] board[i][j] board[i][j]为 ‘R’

解题过程

因为只存在一个车,所以没必要递归了,直接把它找出来判断所有可能情形就可以了。
自己写的乱七八糟,主要是没想到实际上遇到任何其它棋子都不用继续循环,还得多练。

具体实现

class Solution {private static final int SIZE = 8;private static final int[][] DIRECTIONS = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};public int numRookCaptures(char[][] board) {// 遍历整个矩阵找到车int x0 = 0, y0 = 0;for(int i = 0; i < SIZE; i++) {for(int j = 0; j < SIZE; j++) {if(board[i][j] == 'R') {x0 = i;y0 = j;}}}int res = 0;// 根据方向查找for(int[] direction : DIRECTIONS) {int x = x0 + direction[0];int y = y0 + direction[1];// 遇到任何其它棋子,都不会再有符合条件的结果,board[x][y] == '.' 可以写条件里while(0 <= x && x < SIZE && 0 <= y && y < SIZE && board[x][y] == '.') {x += direction[0];y += direction[1];}if(0 <= x && x < SIZE && 0 <= y && y < SIZE && board[x][y] == 'p') {res++;}}return res;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com