怎么说呢,这个题还是很简单的,循环遍历矩阵,每个位置上的4个数[ i ][ j ] ,[ i + 1][ j ], [ i ][ j + 1], [i + 1][j + 1].对应的字符+1,判断是不是f,a,c,e。如果是cnt++,然后ok清零
如果不是ok直接清零,防止影响后边的计算。
#include<cstdio>
#include<cmath>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
char a[55][55];
int main()
{
//freopen("1.txt", "r", stdin);
int ok[200]={0};
int cnt = 0;
int x ,y;
cin>>x>>y;
getchar();
for(int i = 0; i < x; i++)
gets(a[i]);
// for(int i = 0; i < x; i++)
// puts(a[i]);
for(int i = 0; i < x; i++)
{
for(int j = 0 ; j < y ; j++)
{
if( i >= 0 && i + 1 < x && j >= 0 && j + 1 < y )
{
//cout<<i<<" "<<j<<endl;
ok[a[i][j]]++;
// cout <<ok[a[i][j]] << " " <<a[i][j] <<endl;
ok[a[i+1][j]]++;
ok[a[i][j+1]]++;
ok[a[i+1][j+1]]++;
if(ok['f'] != 0 && ok['a'] != 0 && ok['c'] != 0 && ok['e'] != 0)
{
cnt++;
memset(ok, 0, sizeof(ok));
}
else
{
memset(ok , 0 , sizeof(ok));
}
}
}
}
cout<<cnt<<endl;
return 0;
}