POJ 3984

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <cstring>
 5 #include <algorithm>
 6 #include <queue>
 7 using namespace std;
 8 int a[10][10],vis[10][10];
 9 int dis[100][2],co[100][2],dir[4][2]={-1,0,1,0,0,1,0,-1},mi;
10 void dfs(int x,int y,int step)
11 {
12     int xx,yy;
13     if(x==4&&y==4)
14     {
15         if(step<mi)
16         {
17             mi=step;
18             for(int i=0;i<=step;i++)
19             {
20                 co[i][0]=dis[i][0];
21                 co[i][1]=dis[i][1];
22             }    
23         }
24         return;
25     }
26     for(int i=0;i<4;i++)
27     {
28         xx=x+dir[i][0];
29         yy=y+dir[i][1];
30         if(xx>=0&&yy>=0&&xx<5&&yy<5&&a[xx][yy]==0&&vis[xx][yy]==0)
31         {
32             vis[xx][yy]=1;
33             dis[step+1][0]=xx;
34             dis[step+1][1]=yy;
35             dfs(xx,yy,step+1);
36             vis[xx][yy]=0;
37         }
38     }
39 }
40 int main(int argc, char *argv[])
41 {
42     for(int i=0;i<5;i++)
43         for(int j=0;j<5;j++)
44         scanf("%d",&a[i][j]);
45     memset(vis,0,sizeof(vis));
46     mi=0x3f;
47     dis[0][0]=0;dis[0][1]=0;
48     vis[0][0]=1;
49     dfs(0,0,0);
50     for(int i=0;i<=mi;i++)
51     {
52         printf("(%d, %d)\n",co[i][0],co[i][1]);
53     }
54     return 0;
55 }

 

posted @ 2018-07-25 14:38  huluxin  阅读(135)  评论(0编辑  收藏  举报