张江鹏 • 10个月前
#include <bits/stdc++.h>
using namespace std;
int N,M,T;
int SX,SY,FX,FY,ZX,ZY;
int mp[6][6];//制作地图
int visit[6][6];
int lux=0;//总路线
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//上下左右
void dfs(int sx,int sy){
if(sx==FX&&sy==FY){
lux++;
return;
}
for(int i=0;i<4;i++){//出边界了
int tx=sx+dir[i][0];
int ty=sy+dir[i][1];
if(tx<1||ty<1||tx>N||ty>M){
continue;
}
if(mp[tx][ty]==1){//障碍物,能不走
continue;
}
if(visit[tx][ty]==1){//走过的不能走了
continue;
}
visit[tx][ty]=1;//标记已走
dfs(tx,ty);// 将tx,ty当成新起点,继续搜索
visit[tx][ty]=0;//已经走过的点释放
}
}
int main()
{
cin>>N>>M>>T;
cin>>SX>>FX>>FY;
memset(mp,0,sizeof(mp));//地图初始化
memset(visit,0,sizeof(visit));//一开始设为没走过
for(int i=1;i<=T;i++){
cin>>ZX>>ZY;
mp[ZX][ZY]=1;
}
visit[SX][SY]=1;
dfs(SX,SY);
cout<<lux;
return 0;
}
评论: