X图形

1.题目

这道题是蓝桥云课上面的一道题目,它是2022年蓝桥杯省模拟题,题目难度为简单。

考察的知识点为递归。

题目链接:X图形

X图形_第1张图片

2.思路

如何理解题意?

蓝桥杯的题目和Leetcode题目最大的不同点在于,蓝桥杯的题目大部分都是以实际问题出发的,因此对于蓝桥杯的题目,我们首先得弄懂题意,这点我们可以从两个地方进行理解:

  • 题目要求
  • 题目样例

这两个地方可以很好的帮助我们理解题目的意思,从而找到合适算法来解题,这题是让我们求图形中有X图案的图形有几个。例如,对于最小的X图形,它有以下的规律:

它中间的字母和左上、左下、右上、右下的字母都是一样的,之后的同理可得。

怎么递归?

有了前面的规律后,我们得找到递归的触发条件和终止条件。那么怎么触发递归函数呢?

很明显,这道题的核心点是每个X图形的中心点,因此我们可以二重循环遍历二维数组,将每个坐标都当做是X图形的中心点。

那终止条件呢?对于X图形,如果我中间的字母和左上、左下、右上、右下的字母都是一样的,那么我是可以在小X图形上+1的。终止条件就是不满足上面的那个条件,就返回0,举个栗子:

下面这个图形我们可以得知它有2个X图形,而对于最外层的X,它是基于里面的小X图形上+1的。

X图形_第2张图片

3.代码

# 输入行和列
row,col = tuple(map(int,input().split()))
# 输入矩阵字母
arr = [input() for r in range(row)]
# 保存最终结果
cnt = 0
# 递归函数
def check(r,c,n):
  # 如果左上、左下、右上、右下坐标没有超出边界
  if r-n >=0 and c-n>=0 and r+n

你可能感兴趣的:(算法解析,算法)