WA on #2,#7,#8
  • 板块P1605 迷宫
  • 楼主封禁用户
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/22 13:01
  • 上次更新2023/10/27 06:32:29
查看原帖
WA on #2,#7,#8
722747
封禁用户楼主2022/10/22 13:01

刚学dfs,按着题解打了一遍,不知道是因为眼睛的问题还是啥的只有70分

#include<bits/stdc++.h>
using namespace std;
int vis[6][6];
int n,m,t;//迷宫的长宽和障碍总数
int sx,sy,fx,fy;//SX,SY代表起点坐标,FX,FY代表终点坐标
int ans;//方案总数
bool pd(int x,int y){
    if(vis[x][y]>=1) return false;
    if(x>n || x<1) return false;
    if(y>m || y<1) return false;
    return true;
}
void dfs(int x,int y){
    if(x==fx && y==fy){
        ans++;
        return;
    }
    int x2,y2;
    x2=x+1,y2=y;
    if(pd(x2,y2)){
        vis[x2][y2]=1;
        dfs(x2,y2);
        vis[x2][y2]=0;
    }
    x2=x-1,y2=y;
    if(pd(x2,y2)){
        vis[x2][y2]=1;
        dfs(x2,y2);
        vis[x2][y2]=0;
    }
    x2=x,y2=y+1;
    if(pd(x2,y2)){
        vis[x2][y2]=1;
        dfs(x2,y2);
        vis[x2][y2]=0;
    }
    x2=x,y2=y-1;
    if(pd(x2,y2)){
        vis[x2][y2]=1;
        dfs(x2,y2);
        vis[x2][y2]=0;
    }
    return;
}
int main(){
    cin>>n>>m>>t;
    cin>>sx>>sy>>fx>>fy;
    int z1,z2;//障碍
    for(int i=1;i<=t;i++){
        cin>>z1>>z2;
        vis[z1][z2]=9;//不能走
    }
    dfs(sx,sy);
    cout<<ans;
    return 0;
}
2022/10/22 13:01
加载中...