问题描述

  给定一个字母矩阵,定义一个LQ三角形为某行中连续的几个字母、某列中连续的几个字母和一条45度的斜线中连续的几个字母组成的等腰直角三角形的边缘部分,其中每条边上的字母数量相等且至少为2 。   

例如,对于下面的字母矩阵中,所有的字母 L 组成一个LQ三角形,所有字母 Q 组成了一个 LQ 三角形,所有字母 C 也组成了一个 LQ 三角形。   AAAAAAA   ALLLLLA   ALQQLAA   ALQLAAC   ALLAACC   ALAACCC   

如果一个 LQ 三角形边上的所有字母相等,则称为一个全相等三角形。以三个例子都是全相等三角形。   给定一个字母矩阵,请求其中有多少个全相等三角形。

输入格式

   输入第一行包含两个整数 n, m,分别表示字母矩阵的行数和列数。   

接下来 n 行,每行 m 个大写字母,为给定的矩阵。

输出格式

  输出一行,包含一个整数,表示答案。

样例输入

3 4 AAAA ALAQ ALQQ

样例输出

4

样例输入

6 7 AAAAAAA ALLLLLA ALQQLAA ALQLAAC ALLAACC ALAACCC

样例输出

23

评测用例规模与约定

  对于 50% 的评测用例,1 <= n, m <= 10。   对于所有评测用例,1 <= n, m <= 100。

=========================================================================

import java.util.Scanner;public class Main1 {private static int n, m;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();char[][] cs = new char[n][m];for (int i = 0; i < n; i++) {cs[i] = sc.next().toCharArray();}int cnt = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cnt += dfs(cs, i, j);}}System.out.println(cnt);}private static int dfs(char[][] cs, int x, int y) {char cur = cs[x][y];int ans = 0;// 右下角int len = 2;while (true) {boolean is = true;int X = x + len - 1, Y = y + len - 1;// 求两个横向的 如果不满足不需要继续循环if (X >= n || Y >= m || cs[X][y] != cur || cs[x][Y] != cur) break;// 看当前三角形是否符合for (int i = 1; i < len - 1; i++) {if (cs[x + i][Y - i] != cur) {is = false;break;}}len++;if (is) ans++;}// 右上角len = 2;while (true) {boolean is = true;int X = x - len + 1, Y = y + len - 1;if (X < 0 || Y >= m || cs[X][y] != cur || cs[x][Y] != cur) break;for (int i = 1; i < len - 1; i++) {if (cs[x - i][Y - i] != cur) {is = false;break;}}len++;if (is) ans++;}// 左上角len = 2;while (true) {boolean is = true;int X = x - len + 1, Y = y - len + 1;if (X < 0 || Y < 0 || cs[X][y] != cur || cs[x][Y] != cur) break;for (int i = 1; i < len - 1; i++) {if (cs[x - i][Y + i] != cur) {is = false;break;}}len++;if (is) ans++;}// 左下角len = 2;while (true) {boolean is = true;int X = x + len - 1, Y = y - len + 1;if (X >= n || Y < 0 || cs[X][y] != cur || cs[x][Y] != cur) break;for (int i = 1; i < len - 1; i++) {if (cs[x + i][Y + i] != cur) {is = false;break;}}len++;if (is) ans++;}return ans;}
}

蓝桥杯 LQ三角形 模拟相关推荐

  1. 第十四届蓝桥杯第一期模拟赛试题与题解 C++

    第十四届蓝桥杯第一期模拟赛试题与题解 C++ 试题 A 题解:位运算 试题 B 题解:日历模拟 试题 C 题解:double 求和 试题 D 题解:枚举 试题 E 题解:二维前缀和 试题 F 题解:两 ...

  2. 第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解

    本篇文章对第十四届蓝桥杯第三期模拟赛所有的题目进行了详细解析.如果大家还想刷题的话,我给大家整理出了第十二届的省赛真题:第十二届省赛C/C++ B组真题.推荐大家可以去做一下. 文章目录 一.填空题 ...

  3. 第十四届蓝桥杯第二期模拟赛 【python】

    第十四届蓝桥杯第二期模拟赛 [python] 文章目录 第十四届蓝桥杯第二期模拟赛 [python] ✨最小的2022 (python二进制) ❓️问题描述 答案提交

  4. 蓝桥杯|2021第十二届蓝桥杯第二次模拟赛真题与解答[Java]

    记录2021年第十二届蓝桥杯第二次模拟赛真题与解题,部分答案来自网络.个人记录,菜得很. 目录 填空题 一 二 三 四 五 编程题 六 七 八 九 十 填空题 一 问题描述 请问在 1 到 2020 ...

  5. 【第十四届蓝桥杯单片机组模拟赛1】

    第十四届蓝桥杯单片机组模拟赛1 距第十四届蓝桥杯单片机还有不到一个月的时间啦,加油 源码 /*------------------------------第十四届蓝桥杯单片机模式赛---------- ...

  6. 蓝桥杯 数字三角形

    蓝桥杯 数字三角形 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1< ...

  7. 第十四届蓝桥杯第一期模拟赛 python

    第十四届蓝桥杯python第一期模拟赛 文章目录 第十四届蓝桥杯python第一期模拟赛 1. 二进制位数 问题描述 答案提交 思路 参考答案 2. 晨跑 问题描述 答案提交 思路 参考答案 3. 调 ...

  8. 第十二届蓝桥杯(2021年)模拟赛 Python组(第一期) 题目+个人解答

    填空题 填空题-1 [问题描述] 如東整数a是整数b的整数倍,则称b是a的约数. 请问,有多少个正整数是2020的约数. [答案提交] 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一 ...

  9. 一些蓝桥杯的简单模拟题目

    3.xx大学的模拟题 1.基础知识 顺序 选择 循环 数组宁符数组 结构体 函数 全排列 multimap 1.*梦里的难题 生化危机血腥暴力的场面对小星星的冲击很大,晚上频繁地做起了梦,梦里他担负起 ...

最新文章

  1. 获取 一个文件 在沙盒Library/Caches/ 目录下的路径
  2. 企业管理软件的需求描述方法
  3. pythonexe32位-如何使用pyinstaller打包32位的exe程序
  4. 009_JSONFunction对象
  5. QT的QTableWidget类的使用
  6. wpf 去除按钮点击时会画一个点线的矩形
  7. Spring与Web整合
  8. 用nifi把hdfs数据导到hive
  9. 正则表达式30分钟入门教程--deerchao
  10. 第一个SSCLI范例:echo的调试问题
  11. Github 用户喊话微软:放弃 ICE 吧,不然会失去我们的
  12. Struts2学习笔记一之工作原理和struts.xml解析
  13. 基于双生视界的live2d提取与查看方法
  14. 《概念与类比》:侯世达的双翼
  15. R语言课程设计之-深圳房价预测模型
  16. 海军领域搜狗细胞词库
  17. ROS学习笔记02、ROS使用C++、Python来实现HelloWorld
  18. MYSQL数据库开发之路-----数据查询一
  19. 简单网页版的年会抽奖程序,设计个界面套上就可以了,抽奖员工编号姓名改改代码就可以了,很简单的
  20. Arduino造轮子—FlashSRAM优化代码

热门文章

  1. linux启动logo修改 bootlogo
  2. 【第50期】10本金融科技好书为你转行、升职和加薪助力
  3. bytebuf池_Netty java从ByteBuf获取数据
  4. Tyk在Ubuntu上安装
  5. HTML+CSS+JavaScript编程入门指南
  6. 理解生成模型与判别模型
  7. Java UUID生成4位8位16位20位24位32位长度的随机字符串 UUIDUtil工具类
  8. Linux自学笔记------Day02 文件I/O
  9. 使用Ajax周期获取系统时间
  10. esp now 的坑