如何在C ++中解决Lee的算法?

时间:2015-08-04 17:57:56

标签: c++ c algorithm queue

我试图使用Lee的算法(迷宫)来解决C ++问题。我必须找到一个两个人在同一时间(最短)相遇的地方,知道R和J代表他们开始的地方,X是障碍。这就是rj.in的样子:

5 8
XXR  XXX
 X  X  X
J X X  X
      XX
XXX XXXX

问题在于,当我阅读它时,它总是具有相同的值。我究竟做错了什么?这是我的代码,这就是出现问题的地方:

#include <iostream>
#include <queue>
#include <cstdio>

using namespace std;
#define ex -1
#define red(X) scanf("%d",&X);
const int MAX=150;
int ro [MAX][MAX],ju [MAX][MAX];
inline int inside(int x,int y,int n,int m)
{
    return x>=1 and x<=n and y>=1 and y<=m;
}
queue<pair<int,int> > Qr;
queue<pair<int,int> > Qj;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
int main()
{  freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
int rx_n,ry_n,jx_n,jy_n,n,m,i,j,t;

    red(n);
    red(m);
  for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
  {


red(t); 
printf("%d ",t);


if((char)t=='X') {ro[i][j]=-1; ju[i][j]=-1;  }
      if((char)t=='R') {ro[i][j]=1; Qr.push(make_pair(i,j));}
      if((char)t=='J') {ju[i][j]=1; Qj.push(make_pair(i,j));}
  }

我使用C函数是因为它们更快。

0 个答案:

没有答案