题目链接
这个题目注意是8个方向,但只有四个方向可以算周长,这个注意一下就好
import java.util.*;
import java.math.*;
public class Main {
public static int[] dx={1,1,-1,-1,0,0,1,-1};
public static int[] dy={-1,1,1,-1,1,-1,0,0};
public static int ans=0;
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int r=sc.nextInt();
int c=sc.nextInt();
int x=sc.nextInt();
int y=sc.nextInt();
sc.nextLine();
char[][] map=new char[r][c];
for(int i=0;i<r;i++){
String s=sc.nextLine();
map[i]=s.toCharArray();
}
dfs(map,x-1,y-1);
System.out.println(ans);
}
public static void dfs(char[][] map,int x,int y){
int r=map.length;
int c=map[0].length;
map[x][y]='Y';
for(int i=0;i<8;i++){
int xx=x+dx[i];
int yy=y+dy[i];
if(xx<0||yy<0||xx==r||yy==c||map[xx][yy]=='.'){
if(i>3)
ans++;
continue;
}
if(map[xx][yy]=='X')
dfs(map,xx,yy);
}
}
}