代码如下:
- #include<stdio.h>
- #include<iostream>
- #include<algorithm>
- #include<string.h>
- #define MAXN 10000
- using namespace std;
- int map[9][9]={{1,1,1,1,1,1,1,1,1},{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},{1,0,0,0,0,1,0,0,1},{1,1,0,1,0,1,0,0,1},{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 mi;
- int x1,y1,x2,y2;
- void dfs(int x1,int y1,int ans)
- {
- if(map[x1][y1])
- return ;
- ans++;
- if(x1==x2&&y1==y2)
- {
- if(ans<mi)
- mi=ans;
- return ;
- }
- map[x1][y1]=1;
- dfs(x1,y1+1,ans);
- dfs(x1,y1-1,ans);
- dfs(x1+1,y1,ans);
- dfs(x1-1,y1,ans);
- map[x1][y1]=0;
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
- int ans=0;
- mi=MAXN;
- dfs(x1,y1,ans);
- printf("%d\n",mi-1);
- }
- }