zoukankan      html  css  js  c++  java
  • ACwing(基础)--- 走迷宫(bfs)

    最短路模型

    #include<cstring>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    typedef pair<int,int> PII;
    
    const int N = 110;
    int n,m;
    int g[N][N];
    int d[N][N];
    PII q[N*N];//手写队列
    
    int dfs() {
    	int hh=0,tt=0;
    	q[0]= {0,0};
    	memset(d,-1,sizeof(d));//初始化-1为标记,没搜寻过
    	d[0][0]=0;
    	int dx[4]= {-1,0,1,0},dy[4]= {0,1,0,-1};//左右上下
    	while(hh<=tt) {
    		auto t=q[hh++];//t表示当前位置
    		for(int i=0; i<4; i++) {
    			int x=t.first+dx[i],y=t.second+dy[i];//(x、y)移动后的位置
    			if(x>=0&&x<n&&y>=0&&y<m&&g[x][y]==0&&d[x][y]==-1) {
    				d[x][y]=d[t.first][t.second]+1;//当前位置+1
    				q[++tt]= {x,y};//进入队列用于下次查询
    			}
    		}
    	}
    	return d[n-1][m-1];
    }
    int main() {
    	cin>>n>>m;
    	for(int i=0; i<n; i++)
    		for(int j=0; j<m; j++)
    			cin>>g[i][j];
    
    	cout<<dfs()<<endl;
    
    	return 0;
    }
    
  • 相关阅读:
    Title
    Title
    Title
    Title
    Python生成随机验证码
    Time模块和datetime模块
    For循环的实质
    Python函数
    集合set
    字符串内置方法的使用
  • 原文地址:https://www.cnblogs.com/bingers/p/13272111.html
Copyright © 2011-2022 走看看