深搜写了一半才想过来,不对啊A怎么会深搜?果然有简单方法,要灵活判断,不要学傻了。
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
char a[505][505];
void solve(){
int m,n;
cin>>m>>n;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
if(a[i][j]=='.'){
a[i][j]='D';
}
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(a[i][j]=='S'&&(a[i][j+1]=='W'||a[i][j-1]=='W'||a[i+1][j]=='W'||a[i-1][j]=='W')){
cout<<"No";
return;
}
}
}
cout<<"Yes"<<endl;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cout<<a[i][j];
}
cout<<endl;
}
}
int main(){
solve();
return 0;
}