2021年08月22日 周日 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】
1. 题目描述
给你一个由"0"(水)、“1”(陆地)和2"(障碍物)组成的的一维网格,再给你一个两栖交通工具,走陆地费用为1,走水路费用为2,障碍物无法通行,请你计算从网格的起始位置行驶到最终位置的最小费用。
注意:仅可以水平方向和竖直方向行驶。如果无法到达目的地,则返回-1。另外,起始第1个位置不算,根据到达位置的属性来决定费用。
输入:
{
{
1,1,1,1,0},{
0,1,0,1,0},{
1,1,2,1,1},{
0,2,0,0,1} }
输出:
7
2. DFS 或 BFS
经典迷宫问题,常见方法有两种:DFS、BFS
2.1 DFS
笔试的时候用的是DFS,结果超时了,只通过了66.67%。
class Solution {
public:
int ans = INT_MAX;
vector<vector<int>> dir = {
{
0,1},{
1,0},{
0,-1},{
-1,0} };
int minSailCost(vector<vector<int> >& input) {
dfs(input, 0, 0, 0);
return ans == INT_MAX ? -1 : ans;
}
void dfs