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:机器人的运动范围的主要内容,如果未能解决你的问题,请参考以下文章

[acwing#24]机器人的运动范围(BFS-DFS)

AcWing 24. 机器人的运动范围

24. 机器人的运动范围 dfs

《剑指Offer——12.矩阵中的路径,13.机器人的运动范围》代码

剑指offer--13机器人运动范围

剑指OFFER 机器人的运动范围