1、从【0,0】到【row-1, col-1】的所有路径
class Solution {
public:
vector<int> dict{-1,0,1,0,-1};
vector<int> cur_v;
vector<vector<bool>> sign;
void dfs(vector<vector<int>>&A,int row,int col){
if(row<0||row==A.size()||col<0||col==A[0].size()||sign[row][col]){//越界
return;
}
if(row==A.size()-1&&col==A[0].size()-1){//到达目标位置
cur_v.push_back(A[row][col]);//存储当前路径结点
for(int i = 0; i < cur_v.size(); ++i) {
cout << cur_v[i] << "\t";
}
cout << endl;
cur_v.pop_back();//回溯
return;
}
cur_v.push_back(A[row][col]);//存储当前节点
sign[row][col]=true;//标识访问过
for(int i =0; i < 4; ++i) {
int new_row = row + dict[i];
int new_col = col + dict[i+1];
dfs(A,new_row, new_col);
}
cur_v.pop_back();//回溯
sign[row][col] = false;
}
bool maximumMinimumPath(vector<vector<int>>& A) {
sign.resize(A.size(), vector<bool>(A[0].size(), false));
dfs(A,0,0);
return true;
}
};