本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
问题说明等待的蓝天上有数字矩阵,其中只包含数字0和2。 等待的蓝天很喜欢2020,他想找
这个数字矩阵里有几个2020? 等待的蓝天关注着构成2020的三种方法:
在同一行中连续4个字符从左向右构成2020。
在同一列中连续4个字符从上到下构成2020。
从左上到右下的斜线上连续4个字符,从左上到右下构成2020。
例如,对于以下矩阵:
220000
000000
002202
000000
000022
002020
一共五个2020。 其中一个在同一行,一个在同一列,三个在斜线上。 等待的蓝天队伍比上面的队伍还大。 因为太大了,他不得不把这个矩阵放在一个文件里。 问题目录下有一个文件2020.txt,其中显示了等待的蓝天矩阵。 请帮助等待的蓝天,看看他的矩阵里有多少2020。
算法说明这里以问题中给出的数据为例,由6个数字串构成列表。 我们要找到所有的2020,就应该一个接一个地找。 首先,遍历每行,找到每行中所有可配置的2020,再遍历每列,找到列方向中的所有2020,最后遍历从左上到右下的情况,找到剩下的2020。 因为主题只给了这三种方法,所以我们找的时候也遵循这个方法。 以下是完整代码的展示。