2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int dx[4]={0,-1,0,1}; int dy[4]={-1,0,1,0}; struct node{int x,y;}b[1100];//b数组用于记录路径 int n,m,a[30][30],stx,sty,edx,edy; bool bk; void dfs(int x,int y,int k) { if(x==edx && y==edy) { for(int i=1;i<k;i++) printf("(%d,%d)->",b[i].x,b[i].y); printf("(%d,%d)\n",b[k].x,b[k].y); bk=1; return ; } for(int i=0;i<=3;i++) { int xx=x+dx[i],yy=y+dy[i]; if(a[xx][yy]) { a[xx][yy]=0; b[k+1].x=xx;b[k+1].y=yy; dfs(xx,yy,k+1); a[xx][yy]=1; } } } int main() { scanf("%d%d",&n,&m); memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); scanf("%d%d%d%d",&stx,&sty,&edx,&edy); if(a[stx][sty]==0 || a[edx][edy]==0) { printf("-1\n"); return 0;} a[stx][sty]=0; b[1].x=stx;b[1].y=sty; bk=false;dfs(stx,sty,1); if(!bk)printf("-1\n"); return 0; } -
0
#include<bits/stdc++.h> using namespace std; int dx[4]={0,-1,0,1}; int dy[4]={-1,0,1,0}; struct node{int x,y;}b[1100];//b数组用于记录路径 int n,m,a[30][30],stx,sty,edx,edy; bool bk; void dfs(int x,int y,int k) { if(x==edx && y==edy) { for(int i=1;i<k;i++) printf("(%d,%d)->",b[i].x,b[i].y); printf("(%d,%d)\n",b[k].x,b[k].y); bk=1; return ; } for(int i=0;i<=3;i++) { int xx=x+dx[i],yy=y+dy[i]; if(a[xx][yy]) { a[xx][yy]=0; b[k+1].x=xx;b[k+1].y=yy; dfs(xx,yy,k+1); a[xx][yy]=1; } } } int main() { scanf("%d%d",&n,&m); memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); scanf("%d%d%d%d",&stx,&sty,&edx,&edy); if(a[stx][sty]==0 || a[edx][edy]==0) { printf("-1\n"); return 0;} a[stx][sty]=0; b[1].x=stx;b[1].y=sty; bk=false;dfs(stx,sty,1); if(!bk)printf("-1\n"); return 0; }
- 1
信息
- ID
- 78
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 280
- 已通过
- 73
- 上传者