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

机器人的运动范围(DFS)

机器人的运动范围(DFS)

剑指OFFER 机器人的运动范围