81 使用DFS和BFS解机器人的运动范围

问题描述:地上有一个m行n列的方格,从坐标[0,0]到坐标[m-1,n-1].一个机器人从坐标[0,0]的格子开始移动,他每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。

java 复制代码
public int numBit(int n)
{
int num=0;
while(n/10!=0)
{
num+=n%10;
n=n/10;
}
num+=n;
return num;
}
int count=0;

public void dfs(int [][]matrix,int i,int j,int k,int [][]visited)
{
if(i<0||i>=matrix.length||j<0||j>=matrix[0].length){return;}
if(visited[i][j]){return;}
if(numBit(matrix[i][j])>k){return;}
visited[i][j]=true;
count+=1;
dfs(matrix,i+1,j,k,visited);
dfs(matrix,i-1,j,k,visited);
dfs(matrix,i,j+1,k,visited);
dfs(matrix,i,j-1,k,visited);
}
public int Dfs(int [][]matrix,int k)
{
Boolean [][]visited=new Boolean[matrix.length][matrix[0].length];
for(int i=0;i<matrix.length;i++)
{
Arrays.fill(visisted[i],false);
}
dfs(matrix,0,0);
​​​​​​​return count;
}

bfs求解:每次若满足条件则将其放入queue中去,并在弹出时判断其上下左右四个方向是否可行,numBit方法与上面一样。

java 复制代码
public int bfs(int [][]matrix,int k)
{
Queue<Integer>queueRow=new Linkedlist<>();
Queue<Integer>queueCol=new LinkedList<>();
queueRow.add(0);
queueCol.add(0);
int count==0;
while(!queueRow.isEmpty())
{
int Row=queueRow.poll();
int Col=queueCol.poll();
visited[Row][Col]=true;
count++;
if(Row-1>0&&visited[Row-1][Col]==false){queueRow.add(Row-1);queueCol.add(Col);}
if(Row+1<matrix.length&&visited[Row+1][Col]==false){queueRow.add(Row+1);queueCol.add(Col);}
if(Col-1>0&&visited[Row][Col-1]==false){queueRow.add(Row);queueCol.add(Col-1);}
if(Col+1<matrix[0].length&&visited[Row][Col+1]==false){queueRow.add(Row);queueCol.add(Col+1);}
}
return count;
}
相关推荐
季鸢33 分钟前
Java设计模式之状态模式详解
java·设计模式·状态模式
闪电麦坤951 小时前
数据结构:递归的种类(Types of Recursion)
数据结构·算法
@yanyu6661 小时前
springboot实现查询学生
java·spring boot·后端
ascarl20101 小时前
准确--k8s cgroup问题排查
java·开发语言
magic 2451 小时前
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
java
爱敲代码的憨仔1 小时前
分布式协同自动化办公系统-工作流引擎-流程设计
java·flowable·oa
Gyoku Mint2 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
纪元A梦2 小时前
分布式拜占庭容错算法——PBFT算法深度解析
java·分布式·算法
卿着飞翔2 小时前
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
java·rabbitmq·java-rabbitmq
陈阿土i2 小时前
SpringAI 1.0.0 正式版——利用Redis存储会话(ChatMemory)
java·redis·ai·springai