46代码求调

P1825 [USACO11OPEN] Corn Maze S

附上我的6分代码刚打的 ```cpp #include <bits/stdc++.h> using namespace std; struct la{ int y,x,ans; }s[90000]; int N,M; int starty,startx,finishy,finishx; struct maze{ string a; }a[910]; int dy[]{-1,1,0,0}; int dx[]{0,0,-1,1}; void find(int tail,int x,int y,char na){ for(int i=0;i<N;i++){ for(int j=0;j<M;j++){ if(a[i].a[j]==na&&i!=x&&j!=y){ s[tail].x=i; s[tail].x=j; } } } } void bfs(){ int tail=1,head=0; while(head<tail){ int yy=s[head].y,xx=s[head].x,sum=s[head].ans; head++; for(int i=0;i<4;i++){ if(xx+dx[i]>=0&&yy+dy[i]>=0&&xx+dx[i]<N&&yy+dy[i]<M&&a[xx+dx[i]].a[yy+dy[i]]!='#'){ if(a[xx+dx[i]].a[yy+dy[i]]=='.'){ s[tail].ans=sum++; s[tail].y=yy+dy[i]; s[tail++].x=yy+dx[i]; a[xx+dx[i]].a[yy+dy[i]]='#'; } else{ if(a[xx+dx[i]].a[yy+dy[i]]>='A'&&a[xx+dx[i]].a[yy+dy[i]]<='Z'){ find(tail,xx+dx[i],yy+dy[i],a[xx+dx[i]].a[yy+dy[i]]); s[tail++].ans=sum+1; }else{ if(a[xx+dx[i]].a[yy+dy[i]]=='='){ cout<<sum+1; return ; } } } } } } } int main(){ cin>>N>>M; for(int i=0;i<N;i++){ cin>>a[i].a; if(a[i].a.find("@")<a[i].a.length()){ starty=a[i].a.find("@"); startx=i;//起点 } } s[0].y=starty; s[0].x=startx; s[0].ans=0; bfs(); } ```
by Light_Star @ 2023-03-31 22:31:17


|