思路:
- 使用回溯算法
- 回溯算法的实现方式是利用递归
- 可以借助画树形图来分析所需要的变量和条件
具体细节:
- 定义好终止条件,即最后一个元素符合要求(因此需要一个变量index作形参,来判断当前元素是第几个)
- 定义好边界判断条件(是否非法)
- 定义好回溯算法(递归树的每个分支代表一个方向)
- 因为路径不能重复,需要一个bool数组去定义每个单元格的状态(判断是否访问过)
重新回顾后,感觉要点和难点在于:
- 整体程序的设计,虽然同样是采用回溯算法,但其实用法是有些区别的,比如本题采用回溯法的目的是为了搜索遍历,是暴力解法的一种实现手段,那么我们可以先尝试画出树形流程图,在画图的过程中,考虑使用到哪些变量和参数。哪些部分采用递归,递归的终止条件是什么,同一层次里的递归参数有哪些选择,状态何时更新,何时恢复
- 边界问题的判定,边界是否非法
网友评论