暴力枚举。。。
#include<iostream>
using namespace std;
int main(void)
{
int i, j, n, m;
char map[222][222], b[11][11];
cin>>n>>m;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
cin>>map[i][j];
for(i = 1; i <= 3; i++)
for(j = 1; j <= 3; j++)
cin>>b[i][j];
for(i = 2; i < n; i++)
for(j = 2; j < m; j++)
if(map[i][j] == b[2][2])
{
if(map[i - 1][j - 1] == b[1][1] && map[i - 1][j] == b[1][2] && map[i - 1][j + 1] == b[1][3] &&
map[i][j + 1] == b[2][3] && map[i + 1][j + 1] == b[3][3] && map[i + 1][j] == b[3][2] &&
map[i + 1][j - 1] == b[3][1] && map[i][j - 1] == b[2][1])
cout <<i<<" "<<j<<endl;
else if(map[i - 1][j + 1] == b[1][1] && map[i][j + 1] == b[1][2] && map[i + 1][j + 1] == b[1][3] &&
map[i + 1][j] == b[2][3] && map[i + 1][j - 1] == b[3][3] && map[i][j - 1] == b[3][2] &&
map[i - 1][j - 1] == b[3][1] && map[i - 1][j] == b[2][1])
cout <<i<<" "<<j<<endl;
else if(map[i + 1][j + 1] == b[1][1] && map[i + 1][j] == b[1][2] && map[i + 1][j - 1] == b[1][3] &&
map[i][j - 1] == b[2][3] && map[i - 1][j - 1] == b[3][3] && map[i - 1][j] == b[3][2] &&
map[i - 1][j + 1] == b[3][1] && map[i][j + 1] == b[2][1])
cout <<i<<" "<<j<<endl;
else if(map[i + 1][j - 1] == b[1][1] && map[i][j - 1] == b[1][2] && map[i - 1][j - 1] == b[1][3] &&
map[i - 1][j] == b[2][3] && map[i - 1][j + 1] == b[3][3] && map[i][j + 1] == b[3][2] &&
map[i + 1][j + 1] == b[3][1] && map[i + 1][j] == b[2][1])
cout<<i<<" "<<j<<endl;
}
}
本文提供了一个使用C++实现的暴力枚举算法示例,该算法用于在一个二维字符矩阵中寻找特定子矩阵的所有出现位置。通过对每个可能的位置进行检查,判断是否与目标子矩阵匹配。
690

被折叠的 条评论
为什么被折叠?



