'''2022年1月的做法时隔一年换了一种做法但是依然犯了21年的错误。。。'''r,c = input().split() r = int(r) c = int(c) lis = [] for i in range(r): li = list(input()) lis.append(li) r = r - 1 c = c - 1 nodelis = [] for x in range(r): for y in range(c): nodelis.append((x, y)) s = set() s2 = set('face') res = 0 if r < 1 or c < 1: print(res) else: for node in nodelis: new_node1 = (node[0], node[1] + 1) new_node2 = (node[0] + 1, node[1] + 1) new_node3 = (node[0] + 1, node[1]) s.add(lis[node[0]][node[1]]) s.add(lis[new_node1[0]][new_node1[1]]) s.add(lis[new_node2[0]][new_node2[1]]) s.add(lis[new_node3[0]][new_node3[1]]) if s == s2: res += 1 s.clear() print(res)
'''2021 年2月的做法 '''n, m = input().split()n = int(n) m = int(m) lis = [] s = set() s1 = set('face') count = 0 # 生成右,下,右下 三个位置的下标 dirs = [ lambda x, y: (x, y + 1), lambda x, y: (x + 1, y), lambda x, y: (x + 1, y + 1) ] for i in range(n): li = list(input()) lis.append(li) # 如果无法构成2*2则直接输出 0 if n < 2 and m < 2: print(0) else: for x in range(n - 1): for y in range(m - 1): # 最后一列和最后一行不用统计 s.add(lis[x][y]) # 将当前格子的字符加入集合s for dir in dirs: next_node = dir(x, y) # 得到当前格子右,下,右下的格子坐标,如果没有越界则将该格子字符加入集合s if -1 < next_node[0] < n and -1 < next_node[1] < m: s.add(lis[next_node[0]][next_node[1]]) if s == s1: # 判断集合s与s1是否相等 count += 1 s.clear() print(count) ''' 坑:题目并没有说只输入face字符,有可能输入其他字符,所以不能依靠集合去重功能来判断. 之前掉到这个坑里了: if len(s)==4: count += 1 s.clear() '''



京公网安备 11010502036488号