题目描述
给你n∗m的二维网格,求2∗2的方格的个数,方框里面的字符可以构成'face'
输入格式第一行输入两个整数n,m
接下来n行每行m个小写字符
1<=n,m<=50
输出格式输出满足条件的2∗2的方格的数量
样例样例输入
2 3
fac
cef
样例输出
2
数据范围与提示
分类标签
[二维数组] [字符数组]
C++题解代码
#include <bits/stdc++.h>
using namespace std;
char a[10][10];
int b;
int c;
int d;
int g;
int f[4];
bool fn(int h) {
if (h == 'f') {
if (f[0] == 0) {
f[0] = 1;
return true;
} else {
return false;
}
} else if (h == 'a') {
if (f[1] == 0) {
f[1] = 1;
return true;
} else {
return false;
}
} else if (h == 'c') {
if (f[2] == 0) {
f[2] = 1;
return true;
} else {
return false;
}
} else if (h == 'e') {
if (f[3] == 0) {
f[3] = 1;
return true;
} else {
return false;
}
}
return false;
}
// 描述该功能...
bool face(int x, char y, char z, char e) {
f[0] = 0;
f[1] = 0;
f[2] = 0;
f[3] = 0;
if (!fn(x)) {
return false;
}
if (!fn(y)) {
return false;
}
if (!fn(z)) {
return false;
}
if (!fn(e)) {
return false;
}
return true;
}
// The main procedure
int main() {
cin>>b;
cin>>c;
d = 0;
g = (int)'a';
for (int i = 1; i <= b; i++) {
for (int j = 1; j <= c; j++) {
cin>>a[i][j];
}
}
for (int i = 1; i <= (b-1); i++) {
for (int j = 1; j <= (c-1); j++) {
if (face(a[i][j], a[i][(j+1)], a[(i+1)][j], a[(i+1)][(j+1)])) {
d++;
}
}
}
cout<<d;
return 0;
}
Blockly题解代码图片