5 条题解
-
1
#include<bits/stdc++.h> using namespace std; struct oppo{ int x,y; int s,f; }d[10086]; char maps[105][105],b[105][105]; int main(){ int n,m,x1,y1,x2,y2,head=1,tail=2; bool flag=0; cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>maps[i][j]; } } //cin>>x1>>y1>>x2>>y2; x1=1,y1=1; x2=n,y2=m; int tx,ty; d[1].x=x1; d[1].y=y1; d[1].s=0; b[d[1].x][d[1].y]=1; d[1].f=0; int moving[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; while(head<tail){ for(int i=0;i<=3;i++){ tx=d[head].x+moving[i][0]; ty=d[head].y+moving[i][1]; if(tx<1||tx>m||ty<1||ty>n||maps[tx][ty]=='#'||b[tx][ty]==1) continue; d[tail].x=tx; d[tail].y=ty; d[tail].s=d[head].s+1; b[tx][ty]=1; d[tail].f=head; tail++; if(tx==x2&&ty==y2){ flag=1; break; } } if(flag==1) break; head++; } cout<<d[tail-1].s+1; return 0; }
-
0
#include<bits/stdc++.h> using namespace std; struct zzh{ int x; int y; int s; }t,g; queue<zzh>q; char a[41][41]; int book[41][41],next[4][2]={{-1,0},{0,1},{1,0},{0,-1}},n,m,flag=0; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; } } t.x=1; t.y=1; t.s=1; q.push(t); book[1][1]=1; while(!q.empty()) { t=q.front(); for(int k=0;k<4;k++) { int tx=t.x+next[k][0]; int ty=t.y+next[k][1]; if(tx<1||tx>n||ty<1||ty>m) { continue; g.x=tx; g.y=ty; g.s=t.s+1; q.push(g); book[tx][ty]=1; if(tx==n&&ty==m) { flag=1; break; } } } if(flag==1) { break; } q.pop(); } if(flag==1) { cout<<q.back().s; } return 0; }
-
-1
#include<bits/stdc++.h> using namespace std; struct zzh{ int x; int y; int s; }t,g; queue<zzh>q; char a[41][41]; int book[41][41],next[4][2]={{-1,0},{0,1},{1,0},{0,-1}},n,m,flag=0,ji; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; } } t.x=1; t.y=1; t.s=1; q.push(t); book[1][1]=1; while(!q.empty()) { t=q.front(); for(int k=0;k<4;k++) { int tx=t.x+next[k][0]; int ty=t.y+next[k][1]; if(tx<1||tx>n||ty<1||ty>m) { continue; } g.x=tx; g.y=ty; g.s=t.s+1; q.push(g); book[tx][ty]=1; if(tx==n&&ty==m) { flag=1; ji=g.s; break; } } if(flag==1) { break; } q.pop(); } if(flag==1) { cout<<ji; } return 0; }
-
-1
#include<bits/stdc++.h> using namespace std; struct zzh{ int x; int y; int s; }que[1601]; char a[41][41]; int book[41][41],next[4][2]={{-1,0},{0,1},{1,0},{0,-1}},n,m; int head=1,tail=1; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; } } que[tail].x=1; que[tail].y=1; que[tail].s=1; tail++; book[1][1]=1; int flag=0; while(head<tail) { for(int k=0;k<4;k++) { int tx=que[head].x+next[k][0]; int ty=que[head].y+next[k][1]; if(tx<1 || tx>n || ty<1 || ty>m) { continue; } if(a[tx][ty]=='.' && book[tx][ty]==0) { que[tail].x=tx; que[tail].y=ty; que[tail].s=que[head].s+1; tail++; book[tx][ty]=1; if(tx==n && ty==m) { flag=1; break; } } } if(flag==1) { break; } } if(flag==1) { cout<<que[tail-1].s; } return 0; }
-
-3
#include<bits/stdc++.h> using namespace std; bool pd; char a[101][101]; int b[101][101],k[4][2]={{1,0},{-1,0},{0,1},{0,-1}},n,m,h=1,t=1,sx,sy,ex,ey; struct que{ int x; int y; int bs; }; int main(){ struct que dl[100000]; cin>>n>>m; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j]; //cin>>sx>>sy>>ex>>ey; b[1][1]=1; dl[t].x=1; dl[t].y=1; dl[t].bs=1; t++; while(h<t){ for(int i=0;i<4;i++){ int tx=dl[h].x+k[i][0],ty=dl[h].y+k[i][1]; if(tx<1||tx>n||ty<1||ty>m)continue; else if(a[tx][ty]'#'||b[tx][ty]1)continue; else{ b[tx][ty]=1; dl[t].x=tx; dl[t].y=ty; dl[t].bs=dl[h].bs+1; t++; } if(txn&&tym){ pd=1; cout<<dl[t-1].bs; break; } }
h++; } return 0;
}
- 1
信息
- ID
- 429
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 416
- 已通过
- 65
- 上传者