[color=]25亿活动
,摸鱼闲着也是闲着,于是乎点进去看了下,系统弹出一笔连福;
玩了两把,总差一两个,于是乎拿出了excel 模拟格子数画了起来;
二维结果.png (13.49 KB, 下载次数: 0)
下载附件
2025-1-22 14:33 上传
Excel 中思考了“片刻”(很久)后,果断祭出了python大法:
1. 定义给定的二维矩阵
[color=]matrix
和一个空列表
[color=]max_path
来存储最长路径。
2. 函数接受当前位置的坐标
[color=](x, y)
和当前路径
[color=]path
作为参数。
3. 检查当前位置是否越界、是否为空或是否已经在路径中,如果是,则返回。
4. 将当前位置添加到新路径 new_path 中。
5. 如果当前位置是
[color=]'B6'
,则检查新路径是否比当前最大路径长,如果是,则更新最大路径。
6. 然后递归地向四个方向(上、下、左、右)继续搜索
image.png (87.09 KB, 下载次数: 0)
下载附件
2025-1-22 14:44 上传
python没有让我失望,输出了我期望的结果:['E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'D6', 'D5', 'C5', 'C4', 'D4', 'D3', 'C3', 'C2', 'D2', 'D1', 'C1', 'B1', 'A1', 'A2', 'A3', 'B3', 'B4', 'A4', 'A5', 'A6', 'B6']
4.jpg (210.37 KB, 下载次数: 0)
下载附件
2025-1-22 14:33 上传
1.jpg (160.97 KB, 下载次数: 0)
下载附件
2025-1-22 14:33 上传
2.jpg (166.97 KB, 下载次数: 0)
下载附件
2025-1-22 14:33 上传
3.jpg (142.04 KB, 下载次数: 0)
下载附件
2025-1-22 14:33 上传
[Python] 纯文本查看 复制代码def dfs(matrix, start, end, missing):
max_path = []
rows = len(matrix)
cols = len(matrix[0])
start_row = None
start_col = None
end_row = None
end_col = None
# 查找开始位置和结束位置的坐标
for i in range(rows):
for j in range(cols):
if matrix[j] == start:
start_row = i
start_col = j
if matrix[j] == end:
end_row = i
end_col = j
def helper(x, y, path):
nonlocal max_path
if x = rows or y = cols or matrix[x][y] in missing or matrix[x][y] in path:
return
new_path = path + [matrix[x][y]]
if matrix[x][y] == end:
if len(new_path) > len(max_path):
max_path = new_path
helper(x - 1, y, new_path)
helper(x + 1, y, new_path)
helper(x, y - 1, new_path)
helper(x, y + 1, new_path)
helper(start_row, start_col, [])
return max_path
# 示例矩阵
matrix = [
['A1', 'B1', 'C1', 'D1', 'E1'],
['A2', 'B2', 'C2', 'D2', 'E2'],
['A3', 'B3', 'C3', 'D3', 'E3'],
['A4', 'B4', 'C4', 'D4', 'E4'],
['A5', 'B5', 'C5', 'D5', 'E5'],
['A6', 'B6', 'C6', 'D6', 'E6']
]
start = 'E1'
end = 'B6'
missing = ['B2', 'B5', 'C6']
print(dfs(matrix, start, end, missing))
更新:
由于考虑到部份老伙计没有python运行环境,于是乎移植到了WEB中,
在线地址:xo.canliu.net/other/tb/lj.php
image.png (48.68 KB, 下载次数: 0)
下载附件
2025-1-22 14:40 上传