南阳oj 最小步数

#include<stdio.h>
#define maxv 9
int mg[maxv][maxv]=
{
 1,1,1,1,1,1,1,1,1,//0
 1,0,0,1,0,0,1,0,1,
 1,0,0,1,1,0,0,0,1,
 1,0,1,0,1,1,0,1,1,//3,1
 1,0,0,0,0,1,0,0,1,
 1,1,0,1,0,1,0,0,1,//5,7
 1,1,0,1,0,1,0,0,1,
 1,1,0,1,0,0,0,0,1,
 1,1,1,1,1,1,1,1,1
 } ;
 int num,c,d,min;
void dfs(int x,int y)
{
    if(!mg[x][y])
    {
        num++;
        if(x==c&&y==d)
           if(min>num)
              min=num;
        mg[x][y]=-1;
        dfs(x+1,y);
        dfs(x-1,y);
        dfs(x,y-1);
        dfs(x,y+1);
        mg[x][y]=0;
        num--;
           
    }
}
int main()
{
    int a,b,n;
    scanf("%d",&n);
    while(n--) 
    {
        min=81;
        num=-1; 
        scanf("%d%d%d%d",&a,&b,&c,&d);
        dfs(a,b);
        printf("%d\n",min);
    }
}
View Code

猜你喜欢

转载自www.cnblogs.com/shenyuling/p/9832244.html