1 solutions
-
0
C++ :
#include<cstdio> #include<cstring> using namespace std; const int dx[4]={ 0, -1, 0, 1 }; const int dy[4]={-1, 0, 1, 0 }; struct node { int x,y; }; node list[1100]; int a[20][20],n,m,stx,sty,edx,edy; bool bk; void dfs(int x,int y,int k) { int i,xx,yy; if( x==edx && y==edy) { int dep=k-1; for(i=1;i<=dep-1;i++) printf("(%d,%d)->",list[i].x, list[i].y); printf("(%d,%d)\n", list[dep].x, list[dep].y); bk=true; } else { for(i=0;i<=3;i++) { xx= x+ dx[i]; yy= y+dy[i]; if( xx>=1 && xx<=n && yy>=1 && yy<=m) if( a[xx][yy]==1) { a[xx][yy]=0; list[k].x=xx; list[k].y=yy; dfs( xx,yy, k+1); a[xx][yy]=1; } } } } int main() { int i,j; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&a[i][j]); scanf("%d%d",&stx,&sty); scanf("%d%d",&edx,&edy); list[1].x= stx; list[1].y= sty; bk=false; if( a[stx][sty]==1 && a[edx][edy]==1) { a[stx][sty]=0; dfs( stx , sty , 2); } if( bk==false) printf("-1\n"); return 0; }
- 1
Information
- ID
- 625
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 10
- Tags
- # Submissions
- 3
- Accepted
- 0
- Uploaded By