AcWing22:机器人的运动范围
Posted 劭兮劭兮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing22:机器人的运动范围相关的知识,希望对你有一定的参考价值。
问题
原题链接:
机器人的运动范围
JAVA实现
class Solution
class Node
int x;
int y;
public Node(int x,int y)
this.x=x;
this.y=y;
// public static void main(String[] args)
// int result = movingCount(18,40,40);
// System.out.println(result);
//
public int movingCount(int threshold, int rows, int cols)
// 如果是0row 0column 的表格,没有走的路线
if(rows == 0 && cols == 0)
return 0;
// 从(0,0)出发,至少走过一个格子
int result = 1;
// 可以移动的位置
int[][] move= 0,1,1,0,0,-1,-1,0;
int[][] book = new int[rows][cols];
// (0,0)已经走过
book[0][0] = 1;
Queue<Node> queue = new LinkedList<>();
// 先把(0,0)添加到队列中
queue.offer(new Node(0,0));
while(!queue.isEmpty())
// 取出队列中第一个元素,并删除
Node node = queue.poll();
// 依次判断 机器人可以走的位置,上下左右
for(int i = 0;i<move.length;i++)
int rowPoint = node.x + move[i][0];
int colPoint = node.y + move[i][1];
if(rowPoint >= 0 && rowPoint < rows
&& colPoint >= 0 && colPoint < cols
&& book[rowPoint][colPoint] ==0
&& check(rowPoint,colPoint,threshold))
result++;
queue.offer(new Node(rowPoint,colPoint));
book[rowPoint][colPoint] = 1;
return result;
public boolean check(int rowPoint,int colPoint,int threshold)
int sum = 0;
while(rowPoint != 0)
sum = sum + rowPoint%10;
rowPoint = rowPoint/10;
while(colPoint != 0)
sum = sum + colPoint%10;
colPoint = colPoint/10;
if(sum <= threshold)
return true;
else
return false;
以上是关于AcWing22:机器人的运动范围的主要内容,如果未能解决你的问题,请参考以下文章