来源:牛客网 我废了 大佬帮一下 卡循环里2个小时了```cpp #include using namespace std; char a[10001][10001]; int b[10001][10001]; int ans=0; int n,m; void find(){ int k=0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(b[i][j]==1){ if(a[i][j+1]=='A'&&b[i][j+1]==0){ b[i][j+1]=1; k=1; ans+=1;
}
if(a[i][j-1]=='D'&&b[i][j-1]==0){
b[i][j-1]=1;
k=1;
ans+=1;
}
if(a[i+1][j]=='S'&&b[i+1][j]==0){
b[i+1][j]=1;
k=1;
ans+=1;
}
if(a[i-1][j]=='W'&&b[i-1][j+1]==0){
b[i-1][j]=1;
k=1;
ans+=1;
}
}
}
}
if(k==0){
find();
}
} int main(){ cin>>n>>m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; b[i][j]=0; } } for (int i=0;i<n;i++){ if(a[i][0]=='A'){ b[i][0]=1; cout<<i<<0<<endl; } if(a[i][m-1]=='D'){ b[i][m-1]=1; cout<<i<<endl; } } for (int j=0;j<m;j++){ if(a[0][j]=='W'){ b[0][j]=1; cout<<0<<j<<endl; } if(a[n-1][j]=='S'){ b[n-1][j]=1; cout<<j<<endl; } } find(); cout<<ans; return 0; }