迷宫(bfs)
1,INF起码的,不会让你回头走啊。
2,typedef pair<int ,int > 用法没说清,没用对。
3,奇奇怪怪的。。
#include<iostream> #include<queue> #include<utility> using namespace std; int dx[]={1,-1,0,0}; int dy[]={0,0,1,-1}; int n,m,d[1005][1005],sx,sy,fx,fy; char b[1005][1005]; const int INF=1e6; typedef pair<int,int> p; queue<p> que;r int answer; int bfs(int x,int y) { que.push(p(x,y)); d[x][y]=0; while(que.size()) { p=que.front(); que.pop(); if(p.first==fx&&p.second==fy) break; for(int i=0;i<=3;i++) { int xx=p.first+dx[i]; int yy=p.second+dy[i]; if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&b[xx][yy]!='#'&&d[xx][yy]=INF) { que.push(p(xx,yy))//人家这个是用括号的,用法还得再看看 d[xx][yy]=d[p.first][p.second]+1; } } } return d[fx][fy]; } int main(){ cin>>n>>m; cin>>sx>>sy>>fx>>fy; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>b[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) d[i][j]=INF; answer=bfs(sx,sy); cout<<answer<<endl; }
4,下次再搞吧