问题标题: 酷町堂:1401迷宫求指点,急急急,在线等

0
0
何文轩
何文轩
高级守护
高级守护

我这个代码哪里出问题了

#include<iostream>
using namespace std;
int n,m,t;
int xn,xm,yn,ym,cnt;
int dis[7][7],bk[7][7];
int temp[5][2]={{0,1},{1,0},{0,-1},{-1,0}};
bool tmp(int x,int y){
    if(x>0 && x<=n && y>0 && y<=m)
        return true;
    return false;
}
void dfs(int x,int y){
    if(x==yn&&y==ym){
        cnt++;
        return ;
    }
    int nx,ny;
    for(int i=1;i<=4;++i){
        nx=temp[i][0]+x;
        ny=temp[i][1]+y;
        if(dis[nx][ny]==0&&bk[nx][ny]==0&&tmp(nx,ny)==true){
            bk[nx][ny]=1;
            dfs(nx,ny);
            bk[nx][ny]=0;
        }
    }
}
int main(){
    cin>>n>>m>>t;
    cin>>xn>>xm>>yn>>ym;
    int a,b;
    for(int i=1;i<=t;++i){
        cin>>a>>b;
        dis[a][b]=1;
    }
    dfs(xn,xm);
    cout<<cnt;
    return 0;
}

 


0
0
包涵宇
包涵宇
中级天翼
中级天翼

何文轩

您好!!!

这是DFS吧。。。

你的temp数组写错了!!!

应将:

int temp[5][2]={{0,1},{1,0},{0,-1},{-1,0}};

改为:

int temp[5][2]={{0,0},{0,1},{1,0},{0,-1},{-1,0}};

即可AC!!!

当然,这题也可以用BFS写,应为数据很小

0
0
0
李显晨
李显晨
中级启示者
中级启示者

顶顶顶顶顶顶 顶顶顶顶顶顶顶顶顶
    顶                          顶
    顶              顶顶顶顶顶顶顶顶顶
    顶              顶          顶          顶
    顶              顶          顶          顶
    顶              顶          顶          顶
    顶              顶          顶          顶
    顶                           顶
    顶                        顶  顶
    顶                      顶     顶
    顶                     顶        顶
顶顶顶                 顶           顶
                         顶              顶

0
0
0
0
0
我要回答