| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哪位大虾帮忙看看??wa?why??广搜。#include<iostream.h>
#include<string.h>
struct Node
{
int x,y;
int step;
char s[50];
};
Node a[500];
int mark[7][7];
int wall[3][4];
int x1,y1,x2,y2;
int front,end;
int main()
{
int i,j;
int x,y;
int xx1,yy1,xx2,yy2;
while(cin>>y1>>x1)
{
memset(mark,0,sizeof(mark));
for(i=0;i<300;i++)
{
a[i].step=0;
for(j=0;j<40;j++)
{
a[i].s[j]='9';
}
a[i].s[40]='\0';
}
if(x1==0&&y1==0)break;
cin>>y2>>x2;
for(i=0;i<3;i++)
{
//for(j=0;j<4;j++)
{
cin>>wall[i][1]>>wall[i][0]>>wall[i][3]>>wall[i][2];
wall[i][0]=wall[i][0]<wall[i][2]?wall[i][0]:wall[i][2];
wall[i][1]=wall[i][1]<wall[i][3]?wall[i][1]:wall[i][3];
}
}
front=end=0;
a[0].x=x1;
a[0].y=y1;
a[0].step=1;
mark[x1][y1]=1;
end++;
while(front!=end)
{
//front++;
x=a[front].x;
y=a[front].y;
if(x==x2&&y==y2)
{
for(i=0;i<=40;i++)
{
if(a[front].s[i]!='9')cout<<a[front].s[i];
}
/////// cout<<a[front].s<<endl;
cout<<endl;
break;
}
//E;
x1=x;
y1=y+1;
xx1=x-1;
yy1=y;
xx2=x;
yy2=y;
if(y1<=6)
{
int flag=1;
for(i=0;i<3;i++)
{
if(xx1>=wall[i][0]&&xx1<=wall[i][2]&&yy1>=wall[i][1]&&yy1<=wall[i][3]&&xx2>=wall[i][0]&&xx2<=wall[i][2]&&yy2>=wall[i][1]&&yy2<=wall[i][3])
{
flag=0;
break;
}
}
if(flag==1)
{
if(mark[x1][y1]==0)
{
a[end].x=x1;
a[end].y=y1;
mark[x1][y1]=1;
a[end].step=a[front].step+1;
strcpy(a[end].s,a[front].s);
a[end].s[a[front].step]='E';
end++;
}
}
//N
x1=x-1;
y1=y;
xx1=x-1;
yy1=y-1;
xx2=x-1;
yy2=y;
if(x1>=1)
{
int flag=1;
for(i=0;i<3;i++)
{
if(xx1>=wall[i][0]&&xx1<=wall[i][2]&&yy1>=wall[i][1]&&yy1<=wall[i][3]&&xx2>=wall[i][0]&&xx2<=wall[i][2]&&yy2>=wall[i][1]&&yy2<=wall[i][3])
{
flag=0;
break;
}
}
if(flag==1)
{
if(mark[x1][y1]==0)
{
a[end].x=x1;
a[end].y=y1;
mark[x1][y1]=1;
a[end].step=a[front].step+1;
strcpy(a[end].s,a[front].s);
a[end].s[a[front].step]='N';
end++;
}
}
}
//W
x1=x;
y1=y-1;
xx1=x-1;
yy1=y-1;
xx2=x;
yy1=y-1;
if(y1>=1)
{
int flag=1;
for(i=0;i<3;i++)
{
if(xx1>=wall[i][0]&&xx1<=wall[i][2]&&yy1>=wall[i][1]&&yy1<=wall[i][3]&&xx2>=wall[i][0]&&xx2<=wall[i][2]&&yy2>=wall[i][1]&&yy2<=wall[i][3])
{
flag=0;
break;
}
}
if(flag==1)
{
if(mark[x1][y1]==0)
{
a[end].x=x1;
a[end].y=y1;
mark[x1][y1]=1;
a[end].step=a[front].step+1;
strcpy(a[end].s,a[front].s);
a[end].s[a[front].step]='W';
end++;
}
}
}
//S
x1=x+1;
y1=y;
xx1=x;
yy1=y-1;
xx2=x;
yy2=y;
if(x1<=6)
{
int flag=1;
for(i=0;i<3;i++)
{
if(xx1>=wall[i][0]&&xx1<=wall[i][2]&&yy1>=wall[i][1]&&yy1<=wall[i][3]&&xx2>=wall[i][0]&&xx2<=wall[i][2]&&yy2>=wall[i][1]&&yy2<=wall[i][3])
{
flag=0;
break;
}
}
if(flag==1)
{
if(mark[x1][y1]==0)
{
a[end].x=x1;
a[end].y=y1;
mark[x1][y1]=1;
a[end].step=a[front].step+1;
strcpy(a[end].s,a[front].s);
a[end].s[a[front].step]='S';
end++;
}
}
}
}
front++;
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator