第1个回答 2014-01-21
#include<cstdio>#include<cstring>using namespace std;int dx[]={-1,0,1,0};int dy[]={0,1,0,-1};int a[1000][1000];int m,n;void init(){ freopen("maze.in", "r", stdin); freopen("maze.out", "w", stdout);}void readdata(){ scanf("%d%d", &m, &n); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { scanf("%d", &a[i][j]); } }}void dfs(int x, int y){ if(x==m-1&&y==n-1) { for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { printf("%d ", a[i][j]); } printf("\n"); } printf("\n"); } for(int i=0;i<4;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(nx>=0&&nx<m&&ny>=0&&ny<n&&a[nx][ny]==0) { a[nx][ny]=8; dfs(nx,ny); a[nx][ny]=0; } }}
void work(){ a[0][0]=8; dfs(0,0);}
int main(){ init(); readdata(); work(); return 0;}