帮帮我吧(55分)

P2385 [USACO07FEB] Bronze Lilypad Pond B

vincent125 @ 2023-07-19 21:03:24


using namespace std;
long long  m,n,m1,m2,c[1999][1999],wz1,wz2,wz3,wz4,vis[1999][1999],xd[9],yd[9];
//struct p{
//    int ;
//};
//queue <p > q;
void dfs(int aa,int bb,int bs){
    vis[aa][bb]=1;
    if(aa==wz3&&bb==wz4){
        cout<<bs;
        return ;
    }
    for(int i=1;i<=8;i++){
        int xss=aa+xd[i],yss=bb+yd[i];
        if(xss>=0&&xss<m&&yss>=0&&yss<n&&!vis[xss][yss]){
            vis[xss][yss]=1;
            dfs(xss,yss,bs+1);
        }
    }
}
int main(){
    cin>>m>>n>>m1>>m2;
    xd[1]=m1;xd[2]=m1;xd[3]=0-m1;xd[4]=0-m1;
 yd[5]=m1;yd[6]=m1;yd[7]=0-m1;yd[8]=0-m1;
 xd[5]=m2;xd[6]=0-m2;xd[7]=0-m2;xd[8]=m2;
 yd[1]=m2;yd[2]=0-m2;yd[3]=0-m2;yd[4]=m2;
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            cin>>c[i][j];
            if(c[i][j]==0) vis[i][j]=1;
            if(c[i][j]==2) vis[i][j]=1;
            if(c[i][j]==3) {wz1=i,wz2=j;}
            if(c[i][j]==4) {wz3=i,wz4=j;}
        }
 }
    dfs(wz1,wz2,0);
    return 0;
}

by Max6700 @ 2023-07-19 21:27:27

用bfs啊[逃]


by Max6700 @ 2023-07-19 21:36:10


struct aa
{
    /*
    xxxx
    */
} 

queue <aa> q;//bfs队列 ,前面要结构体,里面装x、y、cnt(坐标的x、y和步数cnt 

int bfs()
{
    q.push(aa{x1,yz,0});//记入 
    v[x1][yz]=1;//标记起点坐标走过 

    while(q.empty()==0)//bfs模板 
    {
        int x=q.front().x;
        int y=q.front().y;
        int cnt=q.front().cnt;
        if(x==x2 && y==y2)//到达终点 
            return cnt;

        q.pop();//清除队首 

        /*
        主函数内把移动方向的x、y差存入dx和dy 
        */ 

        for(int i=0;i<8;i++)//根据坐标差移动
        {
            int nx=x+dx[i];
            int ny=y+dy[i];
            int nc=cnt+1;//步数++ 

            if(nx<=n && nx>=1 && ny<=m && ny>=1 && v[nx][ny]==0 && a[nx][ny]==1)//没越界+没走过+是花 
            {
                v[nx][ny]=1;//走过 
                q.push(aa{nx,ny,nc});//填入 
            }
        }

    }

}

给你个思路


by Max6700 @ 2023-07-19 21:39:46

a了记得吱一声


by vincent125 @ 2023-07-25 20:01:01

@Max6700 我用DFS A 的 [笑脸]


by vincent125 @ 2023-07-25 20:01:29

@Max6700 THANK YOU ~


|