AcWing 1113. java代码dfs不用io的详解
原题链接
简单
作者:
季之秋
,
2021-01-15 18:11:52
,
所有人可见
,
阅读 488
dfs深搜
import java.util.*;
public class Main{
static char p[][];//地图数组要在主方法循环里去重复初始化,
static int ref,n,m,N=25;//全局变量
static int dx[]={-1,0,1,0},dy[]={0,1,0,-1};//四个方向
static int dfs(int x,int y){
for(int i=0;i<4;i++){//开始走四个方向
int a=x+dx[i],b=y+dy[i];//下一个位置
if(a>=0&&a<n&&b>=0&&b<m&&p[a][b]=='.'){//如果不过界
p[a][b]='#';//标记已经走过了
ref++;//记录走过多少个格子
dfs(a,b);//递归下一个格子
}
}
return ref;//返回答案
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(true){
ref=1;//初始化答案
p=new char[N][N];//初始化地图数组
m=sc.nextInt();
n=sc.nextInt();
if(n==0||m==0) break;//直到n和m为0就结束勒
int a=0;int b=0;
for(int i=0;i<n;i++){
p[i]=sc.next().toCharArray();//读入一个字符串转化字符数组 p[i]可以看成一维字符串
for(int j=0;j<m;j++){
if(p[i][j]=='@')//找起始位置
{
a=i;b=j;
}
}
}
System.out.println(dfs(a,b));//输出从起始位置在地图上可以走多少个格子
}
}
}
这个就写的很棒 思路清晰