NC257431. 游游的you矩阵
描述
输入描述
第一行输入两个正整数和
,代表矩阵的行数和列数。
接下来的行,每行输入一个长度为
的、仅由英文小写字母组成的字符串,代表游游拿到的矩阵。
输出描述
一个整数,代表同时包含了'y'、'o'和'u'三种字符的2*2的子矩阵数量。
示例1
输入:
3 3 yuo uiy our
输出:
1
说明:
只有一个2*2的子矩阵同时包含了'y'、'o'和'u'三种字符。C++(clang++ 11.0.1) 解法, 执行用时: 17ms, 内存消耗: 1432K, 提交时间: 2023-08-13 19:05:23
#include <stdio.h> #define N 1005 int n, m, i, j, k, c, v[130]; char s[N][N]; int ok(char *p){ v[*p] = v[*(p+1)] = v[*(p+N)] = v[*(p+N+1)] = ++k; return v['y']==k && v['o']==k && v['u']==k; } int main(){ scanf("%d%d", &n, &m); for(i=1; i<=n; i++){ scanf("%s", s[i]+1); } for(i=1; i<n; i++){ for(j=1; j<m; j++){ if(ok(s[i]+j)) c++; } } printf("%d\n", c); return 0; }
Python3 解法, 执行用时: 2420ms, 内存消耗: 5724K, 提交时间: 2023-08-13 19:02:33
n, m = map(int, input().split()) l = [] ans = 0 for i in range(n): l.append(input()) for i in range(n-1): for j in range(m-1): if (l[i][j:j+2]+l[i+1][j:j+2]).count('y') and (l[i][j:j+2]+l[i+1][j:j+2]).count('o') and (l[i][j:j+2]+l[i+1][j:j+2]).count('u'): ans += 1 print(ans)
pypy3 解法, 执行用时: 159ms, 内存消耗: 24384K, 提交时间: 2023-08-13 19:09:24
import sys input = sys.stdin.readline n, m = map(int, input().split()) s = [input().strip() for _ in range(n)] ans = 0 for i in range(n - 1): for j in range(m - 1): mid = s[i][j:j + 2] + s[i + 1][j:j + 2] if 'y' in mid and 'o' in mid and 'u' in mid: ans += 1 print(ans)