求助dalao 只过了3个点
  • 板块P1605 迷宫
  • 楼主moriyama
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/1/22 16:07
  • 上次更新2023/10/28 11:33:16
查看原帖
求助dalao 只过了3个点
617125
moriyama楼主2022/1/22 16:07
#include <iostream>
using namespace std;
int n,m;
int sx,sy,fx,fy;
bool map[10][10];
bool st[10][10];
int cnt=0;
 int step[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
void dfs(int x,int y)
{
   
   if(x==fx&&y==fy) 
    {
       cnt++;
       return;
    }
   
   for(int i=0;i<4;++i)
   {   int nx=x+step[i][0];
        int ny=y+step[i][1];
       if(nx>=n||ny>=m) continue;//出界
       if(map[nx][ny]) continue;//障碍
       if(nx<0||ny<0) continue;//出界
       if(st[nx][ny]) continue;//走过
       st[nx][ny]=true;
       dfs(nx,ny);
        st[nx][ny]=false;
   }



}
int main()
{
    int t;  //障碍总数
   scanf("%d%d%d",&n,&m,&t);
   scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
   int x,y;
   for(int i=1;i<=t;++i)
   {
    scanf("%d%d",&x,&y);  //障碍
    map[x][y]=true;
   }
   dfs(sx,sy);
   cout<<cnt;

   

}
2022/1/22 16:07
加载中...