华为笔试题。感觉考DFS的使用。
- 更新:今天被美能华面试官提醒,dfs的判断语句可以写在函数开头,进入的时候再进行判断,这样程序会更简洁。
题目
题目描述
一张N*M的地图上每个点的海拔高度不同;从当前点只能访问上、下、左、右四个点中还没有到达过的点,且下一步选择的点的海拔高度必须高于当前点;求从地图中的点A到点B总的路径条数除以$10^9$的余数。地图左上角坐标为(0,0),右下角坐标为(N-1,M-1)。
输入描述
第一行输入两个整数N,M(0<N≤600, 0<M≤600)用空格隔开;接下来N行输入,每行M个整数用空格隔开,代表对应位置的海拔高度(0≤海拔高度≤360000);最后一行四个整数X,Y,Z,W;前两个代表A的坐标为(X,Y);后两个代表B的坐标为(Z,W);输入保证A、B坐标不同,且坐标合法。
输出描述
输出一个整数并换行,整数表示从A到B的总的路径条数除以$10^9$的余数。
示例1
输入
1 | 4 5 |
输出
1 | 2 |
分析
这题使用带记忆的DFS做,使用DFS的思路搜索路径,并且使用一个visited数组标记是否被访问到。
代码
1 |
|