遍历所有左上角#
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 1e3+5;
int n, m, k;
char mapp[maxn][maxn];
int vis[maxn][maxn];
bool f(int i, int j) {
if (mapp[i][j+1] == '.' || mapp[i][j+2] == '.' || mapp[i+1][j] == '.' || mapp[i+1][j+2] == '.' || mapp[i+2][j] == '.' || mapp[i+2][j+1] == '.' || mapp[i+2][j+2] == '.') {
return false;
}
return true;
}
void change(int i, int j) {
vis[i][j+1] = 1;
vis[i][j+2] = 1;
vis[i+1][j] = 1;
vis[i+1][j+2] = 1;
vis[i+2][j] = 1;
vis[i+2][j+1] = 1;
vis[i+2][j+2] = 1;
return ;
}
int main()
{
scanf("%d%d", &n, &m);
memset(vis, 0, sizeof(vis));
for (int i = 0; i < n; i ++) {
scanf("%s", mapp[i]);
}
for (int i = 0; i < n - 2; i ++) {
for (int j = 0; j < m - 2; j ++) {
if (mapp[i][j] == '#') {
vis[i][j] = 1;
if (f(i, j)) change(i, j);
}
}
}
int flag = 1;
for (int i = 0; i < n; i ++) {
for (int j = 0; j < m; j ++) {
if (mapp[i][j] == '#' && vis[i][j] == 0) {
flag = 0;
}
}
}
if (flag) printf("Yes\n");
else printf("No\n");
}