讨论 / 怎么才40分、求救
libertyair 2011-05-12 04:48:00
点我顶贴 收藏 删除
#include <iostream>

using namespace std;

int n,m,x1,y1,x2,y2;

int map[2002][2002],hash[2002][2002]={0};

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

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

struct queue

{int x,y,s;}line[1000005];

int main()

{

int i,j,head=0,tail=1,tx,ty,ts;

cin>>n>>m;

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

cin>>map[i][j];

for(i=0;i<=n+1;i++)

{

map[i][0]=1;

map[i][m+1]=1;

}

for(i=0;i<=m+1;i++)

{

map[0][i]=1;

map[n+1][i]=1;

}

cin>>x1>>y1;

cin>>x2>>y2;

if(map[x1][y1]||map[x2][y2])

{

cout<<"No Answer!";

return 0;

}

line[tail].x=x1,line[tail].y=y1,line[tail].s=0;

hash[x1][y1]=1;

while(head<=tail)

{

head++;

tx=line[head].x,ty=line[head].y,ts=line[head].s;

if(tx==x2&&ty==y2)

{

cout<<ts<<endl;

return 0;

}

for(i=1;i<=4;i++)

if(map[tx+gzx[i]][ty+gzy[i]]==0&&hash[tx+gzx[i]][ty+gzy[i]]==0)

{

tail++;

line[tail].x=tx+gzx[i];line[tail].y=ty+gzy[i];line[tail].s=ts+1;

hash[tx+gzx[i]][ty+gzy[i]]=1;

}

}

cout<<"No Answer!"<<endl;

return 0;

}

查看更多回复
提交回复