2百6df

张江鹏  •  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; 
}  
 


评论: