字符框


遍历整个字符数组即可,注意范围

#include <cstring>
#include <iostream>
using namespace std;

char map[100][100];

void print(int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << map[i][j] << " ";
        cout << endl;
    }
}

bool check(int x, int y)
{
    //ANSIC a-97,f-102,c-99,e-101
    int test[26] = {0};
    test[map[x][y] - 'a'] = 1;
    test[map[x + 1][y] - 'a'] = 1;
    test[map[x][y + 1] - 'a'] = 1;
    test[map[x + 1][y + 1] - 'a'] = 1;
    if (test[0] == 1 && test[2] == 1 && test[4] == 1 && test[5] == 1)
        return true;
    return false;
}

int main()
{
    //输入数据
    int n, m;
    cin >> n >> m;

    memset(map, '0', sizeof map);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            cin >> map[i][j];

    //print(n, m);
    //处理数据
    int cnt = 0; //计数
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < m - 1; j++)
        {
            const char &ch = map[i][j];
            if (ch == 'f' || ch == 'a' || ch == 'c' || ch == 'e')
                if (check(i, j))
                    cnt++;
                else
                    continue;
        }
    //输出数据
    cout << cnt << endl;
    return 0;
}