haiyunhong / CodeSpirit

编程题思路总结

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CodeSpirit(编码的灵魂==)

求职的小菜鸡,刷题ing,在刷题、笔试、面试的过程中总结解题思路~ (陆续更新完善中......一些笔试题根据自己记下来的题目进行解答分享~)

求职日志: 2019年4月25日 【360企业安全】 2019春招在线考试
试卷名称: 机器学习/算法 /数据挖掘方向试卷
开始时间: 2019-04-24 19:00 星期三
结束时间: 2019-04-24 20:30 星期三
笔试时长: 90 分钟

编程题:求二维矩阵的最长路径
解题思路:

1)获取输入为矩阵
(list中添加list即可成为matrix,可用matrix[i][j]读取i,j位置的元素值)
2)定义mian函数:
主要功能:遍历矩阵求最大路径
具体步骤:
创建初始化record矩阵中的每个值为0(记录每个坐标点的最长路径)
定义max_path
遍历二维矩阵的每个坐标点,通过dfs()函数获取当前路径path,更新max_path为path与max_path间的最大值
3)定义dfs函数:
主要功能:用回溯策略实现深度优先算法遍历
具体步骤:
判断record矩阵对应坐标的值,若为0则继续搜索,反之返回当前对应坐标值
遍历当前坐标点的上下左右四个位置
若违反坐标点越界或新位置的值不符合递增则返回路径值为1
反之符合条件的话继续递递归dfs函数搜索新坐标的最长路径
在上下左右四个方向对应的路径值中选出最大值为当前坐标点的最长路径值
record矩阵对应当前坐标点的值也更新为当前最长路径值
关键实现点:
搜索策略:符合递归算法,问题解决可以化为子问题,算法类似,规模减小;
控制策略:当遇到失败的搜索状态,需要返回上一状态,沿另外的路径搜索;
数据结构:一般用数组保存搜索过程中的状态、路径。

About

编程题思路总结


Languages

Language:Python 100.0%