0
已解决
屠永乐
高级守护
高级守护
#include<iostream> using namespace std; int dir[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,-1},{-1,1},{1,1},{-1,-1}}; int n,m,x,y,ans; char a[22][22]; bool b[22][22]; void dfs(int c,int r) { b[c][r]=true; for(int i=0;i<8;i++) { int nc=c+dir[i][0]; int nr=r+dir[i][1]; if(nc>=0&&nc<=m+1&&nr>=0&&nr<=n+1&&!b[nc][nr]) { if(a[nc][nr]=='.'&&i<4)ans++; else if(a[nc][nr]=='X')dfs(nc,nr); } } } int main() { cin>>m>>n>>x>>y; for(int i=0;i<=20;i++) for(int j=0;j<=20;j++) a[i][j]='.'; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; dfs(x,y); cout<<ans; return 0; }