P1234 小 A 的口头禅

该篇文章介绍了如何通过编程解决一个实际问题,即在二维矩阵中查找特定字符串hehe的个数,避免了斜向匹配,提供了C++代码实现

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

小 A 最近有了一个口头禅 “呵呵”,于是他给出了一个矩形,让你求出里面有几个 “hehe”(方向无所谓)。

输入格式

第一行两个数 n,m,表示这个矩形的大小。

接下来 n 行,每行 m 个字符,表示这个矩形。

输出格式

一行一个数,表示有几个 “hehe”。

输入输出样例

输入 #1

5 5
heheh
heheh
heheh
heheh
heheh

输出 #1

10

说明/提示

1≤n,m≤1000。

题目难度

普及-

参考思路(避坑)

1.找的是hehe而不是he

2.斜着的hehe不算

3.正着的和反着的hehe都算,自上而下或自下而上的hehe也算。

hehe,eheh,

h e

e h

h e

e h

都是算的,所以上下左右都要搜

参考代码

 #include<iostream>
using namespace std;
int n,m;
char map[1005][1005];
int main()
{
  cin>>n>>m;
  for(int i=1; i<=n; i++)
    for(int j=1; j<=m; j++) cin>>map[i][j]; //读入方阵
  int ans=0;
  for(int i=1; i<=n; i++)
    for(int j=1; j<=m; j++)
      if(map[i][j]=='h')//如果有h,就枚举搜i
      {
        if(map[i-1][j]=='e'&&map[i-2][j]=='h'&&map[i-3][j]=='e') ans++; //向上穷举
        if(map[i+1][j]=='e'&&map[i+2][j]=='h'&&map[i+3][j]=='e') ans++; //向下穷举
        if(map[i][j-1]=='e'&&map[i][j-2]=='h'&&map[i][j-3]=='e') ans++; //向左穷举
        if(map[i][j+1]=='e'&&map[i][j+2]=='h'&&map[i][j+3]=='e') ans++; //向右穷举
      }
  cout<<ans<<endl; //输出答案
  return 0;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值