为什么第7~9个点过不了QWQ

P2199 最后的迷宫

希望更丰富的展现?使用Markdown
by King_of_gamers @ 2018-10-31 13:21:27


>>>>>希望更丰富的展现?使用Markdown
by Everlasting_Snow @ 2018-10-31 13:21:54


怎么弄的啊 新手不会
by 2018zhongyanbin @ 2018-10-31 13:22:42


希望更丰富的展现?使用Markdown
by double_cm @ 2018-10-31 13:24:41


``` #include<cstdio> #include<cmath> #include<iostream> #include<cstring> #include<algorithm> using namespace std; bool map[21000],v[21000]; struct node { int x,y,dep; }list[210000]; int dx[]={0,0,1,-1,-1,1,-1,1}; int dy[]={1,-1,0,0,-1,1,1,-1}; int n,m,stx,sty,edx,edy; bool check(int x,int y) { int t; if(x==edx) { if(edy>y)t=0; else t=1; } else if(y==edy) { if(edx>x)t=2; else t=3; } else if((x-edx)==(y-edy)) { if(edx<x)t=4; else t=5; } else if(-(x-edx)==(y-edy)) { if(edx>x)t=6; else t=7; } else return false; bool bbk=false; int xx=x+dx[t],yy=y+dy[t]; while(map[(xx-1)*m+yy]) { if(xx==edx&&yy==edy)bbk=true; if(bbk)break; xx+=dx[t];yy+=dy[t]; } return bbk; } int main() { scanf("%d%d",&n,&m); memset(map,false,sizeof(map)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { char x;cin>>x; if(x=='O')map[(i-1)*m+j]=true; } while(scanf("%d%d%d%d",&edx,&edy,&stx,&sty)!=EOF) { if(stx==0&&sty==0&&edx==0&&edy==0)break; memset(v,true,sizeof(v));v[(stx-1)*m+sty]=false; bool bk=false; for(int i=0;i<=7;i++) { int xx=edx+dx[i],yy=edy+dy[i]; if(map[(xx-1)*m+yy]){bk=true;break;} } if(!bk){printf("Poor Harry\n");continue;} list[1].x=stx;list[1].y=sty;list[1].dep=0; int head=1,tail=1;bk=false; if(check(stx,sty)){printf("0\n");continue;} while(head<=tail) { int x=list[head].x,y=list[head].y; for(int i=0;i<=3;i++) { int xx=x+dx[i],yy=y+dy[i]; if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&v[(xx-1)*m+yy]&&map[(xx-1)*m+yy]) { v[(xx-1)*m+yy]=false; if(check(xx,yy)) { printf("%d\n",list[head].dep+1); bk=true;break; } tail++; list[tail].x=xx;list[tail].y=yy; list[tail].dep=list[head].dep+1; } } if(bk)break; head++; } if(!bk)printf("Poor Harry\n"); } return 0; } ```
by 2018zhongyanbin @ 2018-10-31 13:29:57


%%%ZYB大佬太强了
by MZW_BG @ 2018-10-31 13:30:19


没有大佬吗
by 2018zhongyanbin @ 2018-10-31 13:43:01


|