递增序列 python实现1111
答案:180414
问题
对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向右看、或者从上向下看是递增的。
例如,如下矩阵中
YQPD
BKEZ
AFYV
有BKZ、BEZ、AFY、AFV、AKP、DEF 等 6 个三升序列。注意当三个字母是从左下到右上排列时,从左向右看和从上向下看是不同的顺序。
对于下面的 30 行 50 列的矩阵,请问总共有多少个三升序列?
VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG
SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF
ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA
BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL
YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH
ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU
XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR
ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG
MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA
VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF
GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC
EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK
PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW
CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP
RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS
PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR
JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL
YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP
HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN
DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF
LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW
CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ
IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI
ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB
HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP
FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS
VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ
BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR
RRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY
ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX
思路代码
a = []
with open(r'C:\Users\76390\Desktop\1.txt', 'r') as fp:
for line in fp.readlines():
a.append(line.strip())
fp.close()
ans = 0
dirs = [(0, 1), (1, 0), (1, 1), (1, -1), (-1, 1)]
for i in range(len(a)):
for j in range(len(a[0])):
for dir in dirs:
x1, y1 = i, j
while True:
x1 += dir[0]
y1 += dir[1]
x2, y2 = x1, y1
if x1 >= len(a) or y1 >= len(a[0]) or x1 < 0 or y1 < 0:
break
while True:
x2 += dir[0]
y2 += dir[1]
if x2 >= len(a) or y2 >= len(a[0]) or x2 < 0 or y2 < 0:
break
if a[i][j] < a[x1][y1] < a[x2][y2]:
ans += 1
print(ans)
相关文章
- pycharm配置python运行环境_C中调用Python
- 哪些软件是python编写出来的_用Python编程需要什么软件?
- python制作自动交易程序_Python如何实现自动化交易
- 正则表达式Python_python正则表达式匹配字符串
- python定义函数求和_Python定义函数实现累计求和操作
- Python 实现序列与词法解析
- Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化|附代码数据
- 【干货书】时间序列算法导论:使用Python实现机器学习和深度学习技术
- python-Python与SQLite数据库-SQLite数据库的基本知识(一)
- python使用pickle,marshal进行序列化、反序列及JSON的使用详解编程语言
- Python 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)详解编程语言
- Linux下如何快速卸载Python环境(linux如何卸载python)
- Linux创建Python文件的步骤(linux新建python文件)
- python通过http(multipart/form-data)上传文件的方法详解编程语言
- 利用python实现二分法和斐波那契序列详解编程语言
- Python结合MySQL实现信息交互(python与mysql交互)
- 安装Python MySQL驱动之快速指南(python安装mysql驱动)
- 使用Python连接MySQL数据库,实现高效数据交互(python连接mysql)
- 革命性技术:Python与MSSQL的携手合作(python和mssql)
- Linux Python:开启互联网新时代(linux python)