题解 | #迷宫问题#
迷宫问题
http://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
写了两小时。。。就这样吧,过了就行
#include<bits/stdc++.h>
using namespace std;
void BFS(int**matrix,int row,int col,int myrow, int mycol,vector<pair<int,int>>&vec);
void const printvecpair(vector<pair<int,int>>&vec);
int main(){
vector<pair<int,int>>point;
int col;
int row;
cin>>row;
cin>>col;
int *matrix[row];
for(int i=0;i<row;i++)
matrix[i]=(int*)malloc(sizeof(int)*col);
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
cin>>matrix[i][j];
BFS(matrix, row-1, col-1, 0, 0,point);
}
void BFS(int**matrix,int row,int col,int myrow, int mycol,vector<pair<int,int>>&vec){
pair<int,int>temp(myrow,mycol);
if(myrow==row&&mycol==col){
vec.push_back(temp);
printvecpair(vec);
// cout<<mycol<<""<<myrow<<endl;
exit(0);
}
if(mycol<0||mycol>col||myrow<0||myrow>row)
return;
if(matrix[myrow][mycol]==1)
return ;
vec.push_back(temp);
matrix[myrow][mycol]=1;
BFS(matrix, row, col, myrow+1, mycol,vec);
BFS(matrix, row, col, myrow, mycol+1,vec);
BFS(matrix, row, col, myrow-1, mycol,vec);
BFS(matrix, row, col, myrow, mycol-1,vec);
vec.pop_back();
return;
}
void const printvecpair(vector<pair<int,int>>&vec){
for(vector<pair<int,int>>::iterator it=vec.begin();it!=vec.end();it++)
cout<<"("<<it->first<<","<<it->second<<")"<<endl;
}