题目:
最少步数
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
4
-
描述
-
这有一个迷宫,有0~8行和0~8列:
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,10表示道路,1表示墙。
现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)
-
输入
-
第一行输入一个整数n(0<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。
输出
- 输出最少走几步。 样例输入
-
2 3 1 5 7 3 1 6 7
样例输出
-
12 11
-
第一行输入一个整数n(0<n<=100),表示有n组测试数据;
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int x1,y1,x2,y2,min1=999999;//min1代表最小的步数
int go[4][2]= {{1,0},{-1,0},{0,-1},{0,1}};
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
};
void dfs(int x,int y,int s)
{
if(x==x2&&y==y2)
{
min1=min(min1,s);
return ;
}//搜索结束条件,并且更新Min1
if(s>min1) return ;//剪枝,当步数比这个min1大的时候没有搜索下去的必要了
for(int i=0; i<4; i++)
{
int xx=x+go[i][0],yy=y+go[i][1];//下一步要到达的地方
if(xx>=0&&xx<9&&yy>=0&&yy<9&&map[xx][yy]==0)//判断是否越界
{
map[xx][yy]=1;//先把走过的标记为墙
dfs(xx,yy,s+1);//搜索下一层
map[xx][yy]=0;//还原迷宫
}
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
min1=999999;//初始化min1
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);//输入起始和终点坐标
dfs(x1,y1,0);//从0开始深搜
printf("%d\n",min1);
}
return 0;
}
代码2(广搜):
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int x1,y1,x2,y2;
int go[4][2]= {{1,0},{-1,0},{0,-1},{0,1}};//上下左右四个方向
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
};
struct Node
{
int x,y,s;
};
bool vis[10][10];//走过的标记为1,没走的标记为0
int bfs(int x,int y)
{
Node now,to;//现在的和将要走的
now.x=x,now.y=y,now.s=0;
queue<Node>q;
vis[x][y]=1;//把当前的坐标标记
q.push(now);
while(!q.empty())
{
now=q.front();
if(now.x==x2&&now.y==y2) return now.s;//满足条件,返回步数
q.pop();
for(int i=0;i<4;i++)
{
int xx=now.x+go[i][0],yy=now.y+go[i][1];//下一步要走的坐标
if(xx>=0&&xx<9&&yy>=0&&yy<9&&map[xx][yy]==0&&vis[xx][yy]==0)//判断是否越界
{
vis[xx][yy]=1;//把走过的标记
to.x=xx,to.y=yy,to.s=now.s+1;
q.push(to);
}
}
}
return -1;//当队列为空,证明从起点到不了终点,返回-1
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
mem(vis,0);//初始化标记数组
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);//输入起始和终点坐标
printf("%d\n",bfs(x1,y1));
}
return 0;
}
PS:深搜和广搜经典题
------再贴一个大神的代码,只能说膜拜
#include<stdio.h>
int f[9][9][9][9];
int main()
{
int n,a,b,c,d;
f[1][1][1][1]=0;
f[1][1][1][2]=1;
f[1][1][1][4]=19;
f[1][1][1][5]=18;
f[1][1][1][7]=18;
f[1][1][2][1]=1;
f[1][1][2][2]=2;
f[1][1][2][5]=17;
f[1][1][2][6]=16;
f[1][1][2][7]=17;
f[1][1][3][1]=2;
f[1][1][3][3]=6;
f[1][1][3][6]=15;
f[1][1][4][1]=3;
f[1][1][4][2]=4;
f[1][1][4][3]=5;
f[1][1][4][4]=6;
f[1][1][4][6]=14;
f[1][1][4][7]=15;
f[1][1][5][2]=5;
f[1][1][5][4]=7;
f[1][1][5][6]=13;
f[1][1][5][7]=14;
f[1][1][6][2]=6;
f[1][1][6][4]=8;
f[1][1][6][6]=12;
f[1][1][6][7]=13;
f[1][1][7][2]=7;
f[1][1][7][4]=9;
f[1][1][7][5]=10;
f[1][1][7][6]=11;
f[1][1][7][7]=12;
f[1][2][1][1]=1;
f[1][2][1][2]=0;
f[1][2][1][4]=20;
f[1][2][1][5]=19;
f[1][2][1][7]=19;
f[1][2][2][1]=2;
f[1][2][2][2]=1;
f[1][2][2][5]=18;
f[1][2][2][6]=17;
f[1][2][2][7]=18;
f[1][2][3][1]=3;
f[1][2][3][3]=7;
f[1][2][3][6]=16;
f[1][2][4][1]=4;
f[1][2][4][2]=5;
f[1][2][4][3]=6;
f[1][2][4][4]=7;
f[1][2][4][6]=15;
f[1][2][4][7]=16;
f[1][2][5][2]=6;
f[1][2][5][4]=8;
f[1][2][5][6]=14;
f[1][2][5][7]=15;
f[1][2][6][2]=7;
f[1][2][6][4]=9;
f[1][2][6][6]=13;
f[1][2][6][7]=14;
f[1][2][7][2]=8;
f[1][2][7][4]=10;
f[1][2][7][5]=11;
f[1][2][7][6]=12;
f[1][2][7][7]=13;
f[1][4][1][1]=19;
f[1][4][1][2]=20;
f[1][4][1][4]=0;
f[1][4][1][5]=1;
f[1][4][1][7]=5;
f[1][4][2][1]=18;
f[1][4][2][2]=19;
f[1][4][2][5]=2;
f[1][4][2][6]=3;
f[1][4][2][7]=4;
f[1][4][3][1]=17;
f[1][4][3][3]=15;
f[1][4][3][6]=4;
f[1][4][4][1]=16;
f[1][4][4][2]=15;
f[1][4][4][3]=14;
f[1][4][4][4]=13;
f[1][4][4][6]=5;
f[1][4][4][7]=6;
f[1][4][5][2]=16;
f[1][4][5][4]=12;
f[1][4][5][6]=6;
f[1][4][5][7]=7;
f[1][4][6][2]=17;
f[1][4][6][4]=11;
f[1][4][6][6]=7;
f[1][4][6][7]=8;
f[1][4][7][2]=18;
f[1][4][7][4]=10;
f[1][4][7][5]=9;
f[1][4][7][6]=8;
f[1][4][7][7]=9;
f[1][5][1][1]=18;
f[1][5][1][2]=19;
f[1][5][1][4]=1;
f[1][5][1][5]=0;
f[1][5][1][7]=4;
f[1][5][2][1]=17;
f[1][5][2][2]=18;
f[1][5][2][5]=1;
f[1][5][2][6]=2;
f[1][5][2][7]=3;
f[1][5][3][1]=16;
f[1][5][3][3]=14;
f[1][5][3][6]=3;
f[1][5][4][1]=15;
f[1][5][4][2]=14;
f[1][5][4][3]=13;
f[1][5][4][4]=12;
f[1][5][4][6]=4;
f[1][5][4][7]=5;
f[1][5][5][2]=15;
f[1][5][5][4]=11;
f[1][5][5][6]=5;
f[1][5][5][7]=6;
f[1][5][6][2]=16;
f[1][5][6][4]=10;
f[1][5][6][6]=6;
f[1][5][6][7]=7;
f[1][5][7][2]=17;
f[1][5][7][4]=9;
f[1][5][7][5]=8;
f[1][5][7][6]=7;
f[1][5][7][7]=8;
f[1][7][1][1]=18;
f[1][7][1][2]=19;
f[1][7][1][4]=5;
f[1][7][1][5]=4;
f[1][7][1][7]=0;
f[1][7][2][1]=17;
f[1][7][2][2]=18;
f[1][7][2][5]=3;
f[1][7][2][6]=2;
f[1][7][2][7]=1;
f[1][7][3][1]=16;
f[1][7][3][3]=14;
f[1][7][3][6]=3;
f[1][7][4][1]=15;
f[1][7][4][2]=14;
f[1][7][4][3]=13;
f[1][7][4][4]=12;
f[1][7][4][6]=4;
f[1][7][4][7]=5;
f[1][7][5][2]=15;
f[1][7][5][4]=11;
f[1][7][5][6]=5;
f[1][7][5][7]=6;
f[1][7][6][2]=16;
f[1][7][6][4]=10;
f[1][7][6][6]=6;
f[1][7][6][7]=7;
f[1][7][7][2]=17;
f[1][7][7][4]=9;
f[1][7][7][5]=8;
f[1][7][7][6]=7;
f[1][7][7][7]=8;
f[2][1][1][1]=1;
f[2][1][1][2]=2;
f[2][1][1][4]=18;
f[2][1][1][5]=17;
f[2][1][1][7]=17;
f[2][1][2][1]=0;
f[2][1][2][2]=1;
f[2][1][2][5]=16;
f[2][1][2][6]=15;
f[2][1][2][7]=16;
f[2][1][3][1]=1;
f[2][1][3][3]=5;
f[2][1][3][6]=14;
f[2][1][4][1]=2;
f[2][1][4][2]=3;
f[2][1][4][3]=4;
f[2][1][4][4]=5;
f[2][1][4][6]=13;
f[2][1][4][7]=14;
f[2][1][5][2]=4;
f[2][1][5][4]=6;
f[2][1][5][6]=12;
f[2][1][5][7]=13;
f[2][1][6][2]=5;
f[2][1][6][4]=7;
f[2][1][6][6]=11;
f[2][1][6][7]=12;
f[2][1][7][2]=6;
f[2][1][7][4]=8;
f[2][1][7][5]=9;
f[2][1][7][6]=10;
f[2][1][7][7]=11;
f[2][2][1][1]=2;
f[2][2][1][2]=1;
f[2][2][1][4]=19;
f[2][2][1][5]=18;
f[2][2][1][7]=18;
f[2][2][2][1]=1;
f[2][2][2][2]=0;
f[2][2][2][5]=17;
f[2][2][2][6]=16;
f[2][2][2][7]=17;
f[2][2][3][1]=2;
f[2][2][3][3]=6;
f[2][2][3][6]=15;
f[2][2][4][1]=3;
f[2][2][4][2]=4;
f[2][2][4][3]=5;
f[2][2][4][4]=6;
f[2][2][4][6]=14;
f[2][2][4][7]=15;
f[2][2][5][2]=5;
f[2][2][5][4]=7;
f[2][2][5][6]=13;
f[2][2][5][7]=14;
f[2][2][6][2]=6;
f[2][2][6][4]=8;
f[2][2][6][6]=12;
f[2][2][6][7]=13;
f[2][2][7][2]=7;
f[2][2][7][4]=9;
f[2][2][7][5]=10;
f[2][2][7][6]=11;
f[2][2][7][7]=12;
f[2][5][1][1]=17;
f[2][5][1][2]=18;
f[2][5][1][4]=2;
f[2][5][1][5]=1;
f[2][5][1][7]=3;
f[2][5][2][1]=16;
f[2][5][2][2]=17;
f[2][5][2][5]=0;
f[2][5][2][6]=1;
f[2][5][2][7]=2;
f[2][5][3][1]=15;
f[2][5][3][3]=13;
f[2][5][3][6]=2;
f[2][5][4][1]=14;
f[2][5][4][2]=13;
f[2][5][4][3]=12;
f[2][5][4][4]=11;
f[2][5][4][6]=3;
f[2][5][4][7]=4;
f[2][5][5][2]=14;
f[2][5][5][4]=10;
f[2][5][5][6]=4;
f[2][5][5][7]=5;
f[2][5][6][2]=15;
f[2][5][6][4]=9;
f[2][5][6][6]=5;
f[2][5][6][7]=6;
f[2][5][7][2]=16;
f[2][5][7][4]=8;
f[2][5][7][5]=7;
f[2][5][7][6]=6;
f[2][5][7][7]=7;
f[2][6][1][1]=16;
f[2][6][1][2]=17;
f[2][6][1][4]=3;
f[2][6][1][5]=2;
f[2][6][1][7]=2;
f[2][6][2][1]=15;
f[2][6][2][2]=16;
f[2][6][2][5]=1;
f[2][6][2][6]=0;
f[2][6][2][7]=1;
f[2][6][3][1]=14;
f[2][6][3][3]=12;
f[2][6][3][6]=1;
f[2][6][4][1]=13;
f[2][6][4][2]=12;
f[2][6][4][3]=11;
f[2][6][4][4]=10;
f[2][6][4][6]=2;
f[2][6][4][7]=3;
f[2][6][5][2]=13;
f[2][6][5][4]=9;
f[2][6][5][6]=3;
f[2][6][5][7]=4;
f[2][6][6][2]=14;
f[2][6][6][4]=8;
f[2][6][6][6]=4;
f[2][6][6][7]=5;
f[2][6][7][2]=15;
f[2][6][7][4]=7;
f[2][6][7][5]=6;
f[2][6][7][6]=5;
f[2][6][7][7]=6;
f[2][7][1][1]=17;
f[2][7][1][2]=18;
f[2][7][1][4]=4;
f[2][7][1][5]=3;
f[2][7][1][7]=1;
f[2][7][2][1]=16;
f[2][7][2][2]=17;
f[2][7][2][5]=2;
f[2][7][2][6]=1;
f[2][7][2][7]=0;
f[2][7][3][1]=15;
f[2][7][3][3]=13;
f[2][7][3][6]=2;
f[2][7][4][1]=14;
f[2][7][4][2]=13;
f[2][7][4][3]=12;
f[2][7][4][4]=11;
f[2][7][4][6]=3;
f[2][7][4][7]=4;
f[2][7][5][2]=14;
f[2][7][5][4]=10;
f[2][7][5][6]=4;
f[2][7][5][7]=5;
f[2][7][6][2]=15;
f[2][7][6][4]=9;
f[2][7][6][6]=5;
f[2][7][6][7]=6;
f[2][7][7][2]=16;
f[2][7][7][4]=8;
f[2][7][7][5]=7;
f[2][7][7][6]=6;
f[2][7][7][7]=7;
f[3][1][1][1]=2;
f[3][1][1][2]=3;
f[3][1][1][4]=17;
f[3][1][1][5]=16;
f[3][1][1][7]=16;
f[3][1][2][1]=1;
f[3][1][2][2]=2;
f[3][1][2][5]=15;
f[3][1][2][6]=14;
f[3][1][2][7]=15;
f[3][1][3][1]=0;
f[3][1][3][3]=4;
f[3][1][3][6]=13;
f[3][1][4][1]=1;
f[3][1][4][2]=2;
f[3][1][4][3]=3;
f[3][1][4][4]=4;
f[3][1][4][6]=12;
f[3][1][4][7]=13;
f[3][1][5][2]=3;
f[3][1][5][4]=5;
f[3][1][5][6]=11;
f[3][1][5][7]=12;
f[3][1][6][2]=4;
f[3][1][6][4]=6;
f[3][1][6][6]=10;
f[3][1][6][7]=11;
f[3][1][7][2]=5;
f[3][1][7][4]=7;
f[3][1][7][5]=8;
f[3][1][7][6]=9;
f[3][1][7][7]=10;
f[3][3][1][1]=6;
f[3][3][1][2]=7;
f[3][3][1][4]=15;
f[3][3][1][5]=14;
f[3][3][1][7]=14;
f[3][3][2][1]=5;
f[3][3][2][2]=6;
f[3][3][2][5]=13;
f[3][3][2][6]=12;
f[3][3][2][7]=13;
f[3][3][3][1]=4;
f[3][3][3][3]=0;
f[3][3][3][6]=11;
f[3][3][4][1]=3;
f[3][3][4][2]=2;
f[3][3][4][3]=1;
f[3][3][4][4]=2;
f[3][3][4][6]=10;
f[3][3][4][7]=11;
f[3][3][5][2]=3;
f[3][3][5][4]=3;
f[3][3][5][6]=9;
f[3][3][5][7]=10;
f[3][3][6][2]=4;
f[3][3][6][4]=4;
f[3][3][6][6]=8;
f[3][3][6][7]=9;
f[3][3][7][2]=5;
f[3][3][7][4]=5;
f[3][3][7][5]=6;
f[3][3][7][6]=7;
f[3][3][7][7]=8;
f[3][6][1][1]=15;
f[3][6][1][2]=16;
f[3][6][1][4]=4;
f[3][6][1][5]=3;
f[3][6][1][7]=3;
f[3][6][2][1]=14;
f[3][6][2][2]=15;
f[3][6][2][5]=2;
f[3][6][2][6]=1;
f[3][6][2][7]=2;
f[3][6][3][1]=13;
f[3][6][3][3]=11;
f[3][6][3][6]=0;
f[3][6][4][1]=12;
f[3][6][4][2]=11;
f[3][6][4][3]=10;
f[3][6][4][4]=9;
f[3][6][4][6]=1;
f[3][6][4][7]=2;
f[3][6][5][2]=12;
f[3][6][5][4]=8;
f[3][6][5][6]=2;
f[3][6][5][7]=3;
f[3][6][6][2]=13;
f[3][6][6][4]=7;
f[3][6][6][6]=3;
f[3][6][6][7]=4;
f[3][6][7][2]=14;
f[3][6][7][4]=6;
f[3][6][7][5]=5;
f[3][6][7][6]=4;
f[3][6][7][7]=5;
f[4][1][1][1]=3;
f[4][1][1][2]=4;
f[4][1][1][4]=16;
f[4][1][1][5]=15;
f[4][1][1][7]=15;
f[4][1][2][1]=2;
f[4][1][2][2]=3;
f[4][1][2][5]=14;
f[4][1][2][6]=13;
f[4][1][2][7]=14;
f[4][1][3][1]=1;
f[4][1][3][3]=3;
f[4][1][3][6]=12;
f[4][1][4][1]=0;
f[4][1][4][2]=1;
f[4][1][4][3]=2;
f[4][1][4][4]=3;
f[4][1][4][6]=11;
f[4][1][4][7]=12;
f[4][1][5][2]=2;
f[4][1][5][4]=4;
f[4][1][5][6]=10;
f[4][1][5][7]=11;
f[4][1][6][2]=3;
f[4][1][6][4]=5;
f[4][1][6][6]=9;
f[4][1][6][7]=10;
f[4][1][7][2]=4;
f[4][1][7][4]=6;
f[4][1][7][5]=7;
f[4][1][7][6]=8;
f[4][1][7][7]=9;
f[4][2][1][1]=4;
f[4][2][1][2]=5;
f[4][2][1][4]=15;
f[4][2][1][5]=14;
f[4][2][1][7]=14;
f[4][2][2][1]=3;
f[4][2][2][2]=4;
f[4][2][2][5]=13;
f[4][2][2][6]=12;
f[4][2][2][7]=13;
f[4][2][3][1]=2;
f[4][2][3][3]=2;
f[4][2][3][6]=11;
f[4][2][4][1]=1;
f[4][2][4][2]=0;
f[4][2][4][3]=1;
f[4][2][4][4]=2;
f[4][2][4][6]=10;
f[4][2][4][7]=11;
f[4][2][5][2]=1;
f[4][2][5][4]=3;
f[4][2][5][6]=9;
f[4][2][5][7]=10;
f[4][2][6][2]=2;
f[4][2][6][4]=4;
f[4][2][6][6]=8;
f[4][2][6][7]=9;
f[4][2][7][2]=3;
f[4][2][7][4]=5;
f[4][2][7][5]=6;
f[4][2][7][6]=7;
f[4][2][7][7]=8;
f[4][3][1][1]=5;
f[4][3][1][2]=6;
f[4][3][1][4]=14;
f[4][3][1][5]=13;
f[4][3][1][7]=13;
f[4][3][2][1]=4;
f[4][3][2][2]=5;
f[4][3][2][5]=12;
f[4][3][2][6]=11;
f[4][3][2][7]=12;
f[4][3][3][1]=3;
f[4][3][3][3]=1;
f[4][3][3][6]=10;
f[4][3][4][1]=2;
f[4][3][4][2]=1;
f[4][3][4][3]=0;
f[4][3][4][4]=1;
f[4][3][4][6]=9;
f[4][3][4][7]=10;
f[4][3][5][2]=2;
f[4][3][5][4]=2;
f[4][3][5][6]=8;
f[4][3][5][7]=9;
f[4][3][6][2]=3;
f[4][3][6][4]=3;
f[4][3][6][6]=7;
f[4][3][6][7]=8;
f[4][3][7][2]=4;
f[4][3][7][4]=4;
f[4][3][7][5]=5;
f[4][3][7][6]=6;
f[4][3][7][7]=7;
f[4][4][1][1]=6;
f[4][4][1][2]=7;
f[4][4][1][4]=13;
f[4][4][1][5]=12;
f[4][4][1][7]=12;
f[4][4][2][1]=5;
f[4][4][2][2]=6;
f[4][4][2][5]=11;
f[4][4][2][6]=10;
f[4][4][2][7]=11;
f[4][4][3][1]=4;
f[4][4][3][3]=2;
f[4][4][3][6]=9;
f[4][4][4][1]=3;
f[4][4][4][2]=2;
f[4][4][4][3]=1;
f[4][4][4][4]=0;
f[4][4][4][6]=8;
f[4][4][4][7]=9;
f[4][4][5][2]=3;
f[4][4][5][4]=1;
f[4][4][5][6]=7;
f[4][4][5][7]=8;
f[4][4][6][2]=4;
f[4][4][6][4]=2;
f[4][4][6][6]=6;
f[4][4][6][7]=7;
f[4][4][7][2]=5;
f[4][4][7][4]=3;
f[4][4][7][5]=4;
f[4][4][7][6]=5;
f[4][4][7][7]=6;
f[4][6][1][1]=14;
f[4][6][1][2]=15;
f[4][6][1][4]=5;
f[4][6][1][5]=4;
f[4][6][1][7]=4;
f[4][6][2][1]=13;
f[4][6][2][2]=14;
f[4][6][2][5]=3;
f[4][6][2][6]=2;
f[4][6][2][7]=3;
f[4][6][3][1]=12;
f[4][6][3][3]=10;
f[4][6][3][6]=1;
f[4][6][4][1]=11;
f[4][6][4][2]=10;
f[4][6][4][3]=9;
f[4][6][4][4]=8;
f[4][6][4][6]=0;
f[4][6][4][7]=1;
f[4][6][5][2]=11;
f[4][6][5][4]=7;
f[4][6][5][6]=1;
f[4][6][5][7]=2;
f[4][6][6][2]=12;
f[4][6][6][4]=6;
f[4][6][6][6]=2;
f[4][6][6][7]=3;
f[4][6][7][2]=13;
f[4][6][7][4]=5;
f[4][6][7][5]=4;
f[4][6][7][6]=3;
f[4][6][7][7]=4;
f[4][7][1][1]=15;
f[4][7][1][2]=16;
f[4][7][1][4]=6;
f[4][7][1][5]=5;
f[4][7][1][7]=5;
f[4][7][2][1]=14;
f[4][7][2][2]=15;
f[4][7][2][5]=4;
f[4][7][2][6]=3;
f[4][7][2][7]=4;
f[4][7][3][1]=13;
f[4][7][3][3]=11;
f[4][7][3][6]=2;
f[4][7][4][1]=12;
f[4][7][4][2]=11;
f[4][7][4][3]=10;
f[4][7][4][4]=9;
f[4][7][4][6]=1;
f[4][7][4][7]=0;
f[4][7][5][2]=12;
f[4][7][5][4]=8;
f[4][7][5][6]=2;
f[4][7][5][7]=1;
f[4][7][6][2]=13;
f[4][7][6][4]=7;
f[4][7][6][6]=3;
f[4][7][6][7]=2;
f[4][7][7][2]=14;
f[4][7][7][4]=6;
f[4][7][7][5]=5;
f[4][7][7][6]=4;
f[4][7][7][7]=3;
f[5][2][1][1]=5;
f[5][2][1][2]=6;
f[5][2][1][4]=16;
f[5][2][1][5]=15;
f[5][2][1][7]=15;
f[5][2][2][1]=4;
f[5][2][2][2]=5;
f[5][2][2][5]=14;
f[5][2][2][6]=13;
f[5][2][2][7]=14;
f[5][2][3][1]=3;
f[5][2][3][3]=3;
f[5][2][3][6]=12;
f[5][2][4][1]=2;
f[5][2][4][2]=1;
f[5][2][4][3]=2;
f[5][2][4][4]=3;
f[5][2][4][6]=11;
f[5][2][4][7]=12;
f[5][2][5][2]=0;
f[5][2][5][4]=4;
f[5][2][5][6]=10;
f[5][2][5][7]=11;
f[5][2][6][2]=1;
f[5][2][6][4]=5;
f[5][2][6][6]=9;
f[5][2][6][7]=10;
f[5][2][7][2]=2;
f[5][2][7][4]=6;
f[5][2][7][5]=7;
f[5][2][7][6]=8;
f[5][2][7][7]=9;
f[5][4][1][1]=7;
f[5][4][1][2]=8;
f[5][4][1][4]=12;
f[5][4][1][5]=11;
f[5][4][1][7]=11;
f[5][4][2][1]=6;
f[5][4][2][2]=7;
f[5][4][2][5]=10;
f[5][4][2][6]=9;
f[5][4][2][7]=10;
f[5][4][3][1]=5;
f[5][4][3][3]=3;
f[5][4][3][6]=8;
f[5][4][4][1]=4;
f[5][4][4][2]=3;
f[5][4][4][3]=2;
f[5][4][4][4]=1;
f[5][4][4][6]=7;
f[5][4][4][7]=8;
f[5][4][5][2]=4;
f[5][4][5][4]=0;
f[5][4][5][6]=6;
f[5][4][5][7]=7;
f[5][4][6][2]=5;
f[5][4][6][4]=1;
f[5][4][6][6]=5;
f[5][4][6][7]=6;
f[5][4][7][2]=6;
f[5][4][7][4]=2;
f[5][4][7][5]=3;
f[5][4][7][6]=4;
f[5][4][7][7]=5;
f[5][6][1][1]=13;
f[5][6][1][2]=14;
f[5][6][1][4]=6;
f[5][6][1][5]=5;
f[5][6][1][7]=5;
f[5][6][2][1]=12;
f[5][6][2][2]=13;
f[5][6][2][5]=4;
f[5][6][2][6]=3;
f[5][6][2][7]=4;
f[5][6][3][1]=11;
f[5][6][3][3]=9;
f[5][6][3][6]=2;
f[5][6][4][1]=10;
f[5][6][4][2]=9;
f[5][6][4][3]=8;
f[5][6][4][4]=7;
f[5][6][4][6]=1;
f[5][6][4][7]=2;
f[5][6][5][2]=10;
f[5][6][5][4]=6;
f[5][6][5][6]=0;
f[5][6][5][7]=1;
f[5][6][6][2]=11;
f[5][6][6][4]=5;
f[5][6][6][6]=1;
f[5][6][6][7]=2;
f[5][6][7][2]=12;
f[5][6][7][4]=4;
f[5][6][7][5]=3;
f[5][6][7][6]=2;
f[5][6][7][7]=3;
f[5][7][1][1]=14;
f[5][7][1][2]=15;
f[5][7][1][4]=7;
f[5][7][1][5]=6;
f[5][7][1][7]=6;
f[5][7][2][1]=13;
f[5][7][2][2]=14;
f[5][7][2][5]=5;
f[5][7][2][6]=4;
f[5][7][2][7]=5;
f[5][7][3][1]=12;
f[5][7][3][3]=10;
f[5][7][3][6]=3;
f[5][7][4][1]=11;
f[5][7][4][2]=10;
f[5][7][4][3]=9;
f[5][7][4][4]=8;
f[5][7][4][6]=2;
f[5][7][4][7]=1;
f[5][7][5][2]=11;
f[5][7][5][4]=7;
f[5][7][5][6]=1;
f[5][7][5][7]=0;
f[5][7][6][2]=12;
f[5][7][6][4]=6;
f[5][7][6][6]=2;
f[5][7][6][7]=1;
f[5][7][7][2]=13;
f[5][7][7][4]=5;
f[5][7][7][5]=4;
f[5][7][7][6]=3;
f[5][7][7][7]=2;
f[6][2][1][1]=6;
f[6][2][1][2]=7;
f[6][2][1][4]=17;
f[6][2][1][5]=16;
f[6][2][1][7]=16;
f[6][2][2][1]=5;
f[6][2][2][2]=6;
f[6][2][2][5]=15;
f[6][2][2][6]=14;
f[6][2][2][7]=15;
f[6][2][3][1]=4;
f[6][2][3][3]=4;
f[6][2][3][6]=13;
f[6][2][4][1]=3;
f[6][2][4][2]=2;
f[6][2][4][3]=3;
f[6][2][4][4]=4;
f[6][2][4][6]=12;
f[6][2][4][7]=13;
f[6][2][5][2]=1;
f[6][2][5][4]=5;
f[6][2][5][6]=11;
f[6][2][5][7]=12;
f[6][2][6][2]=0;
f[6][2][6][4]=6;
f[6][2][6][6]=10;
f[6][2][6][7]=11;
f[6][2][7][2]=1;
f[6][2][7][4]=7;
f[6][2][7][5]=8;
f[6][2][7][6]=9;
f[6][2][7][7]=10;
f[6][4][1][1]=8;
f[6][4][1][2]=9;
f[6][4][1][4]=11;
f[6][4][1][5]=10;
f[6][4][1][7]=10;
f[6][4][2][1]=7;
f[6][4][2][2]=8;
f[6][4][2][5]=9;
f[6][4][2][6]=8;
f[6][4][2][7]=9;
f[6][4][3][1]=6;
f[6][4][3][3]=4;
f[6][4][3][6]=7;
f[6][4][4][1]=5;
f[6][4][4][2]=4;
f[6][4][4][3]=3;
f[6][4][4][4]=2;
f[6][4][4][6]=6;
f[6][4][4][7]=7;
f[6][4][5][2]=5;
f[6][4][5][4]=1;
f[6][4][5][6]=5;
f[6][4][5][7]=6;
f[6][4][6][2]=6;
f[6][4][6][4]=0;
f[6][4][6][6]=4;
f[6][4][6][7]=5;
f[6][4][7][2]=7;
f[6][4][7][4]=1;
f[6][4][7][5]=2;
f[6][4][7][6]=3;
f[6][4][7][7]=4;
f[6][6][1][1]=12;
f[6][6][1][2]=13;
f[6][6][1][4]=7;
f[6][6][1][5]=6;
f[6][6][1][7]=6;
f[6][6][2][1]=11;
f[6][6][2][2]=12;
f[6][6][2][5]=5;
f[6][6][2][6]=4;
f[6][6][2][7]=5;
f[6][6][3][1]=10;
f[6][6][3][3]=8;
f[6][6][3][6]=3;
f[6][6][4][1]=9;
f[6][6][4][2]=8;
f[6][6][4][3]=7;
f[6][6][4][4]=6;
f[6][6][4][6]=2;
f[6][6][4][7]=3;
f[6][6][5][2]=9;
f[6][6][5][4]=5;
f[6][6][5][6]=1;
f[6][6][5][7]=2;
f[6][6][6][2]=10;
f[6][6][6][4]=4;
f[6][6][6][6]=0;
f[6][6][6][7]=1;
f[6][6][7][2]=11;
f[6][6][7][4]=3;
f[6][6][7][5]=2;
f[6][6][7][6]=1;
f[6][6][7][7]=2;
f[6][7][1][1]=13;
f[6][7][1][2]=14;
f[6][7][1][4]=8;
f[6][7][1][5]=7;
f[6][7][1][7]=7;
f[6][7][2][1]=12;
f[6][7][2][2]=13;
f[6][7][2][5]=6;
f[6][7][2][6]=5;
f[6][7][2][7]=6;
f[6][7][3][1]=11;
f[6][7][3][3]=9;
f[6][7][3][6]=4;
f[6][7][4][1]=10;
f[6][7][4][2]=9;
f[6][7][4][3]=8;
f[6][7][4][4]=7;
f[6][7][4][6]=3;
f[6][7][4][7]=2;
f[6][7][5][2]=10;
f[6][7][5][4]=6;
f[6][7][5][6]=2;
f[6][7][5][7]=1;
f[6][7][6][2]=11;
f[6][7][6][4]=5;
f[6][7][6][6]=1;
f[6][7][6][7]=0;
f[6][7][7][2]=12;
f[6][7][7][4]=4;
f[6][7][7][5]=3;
f[6][7][7][6]=2;
f[6][7][7][7]=1;
f[7][2][1][1]=7;
f[7][2][1][2]=8;
f[7][2][1][4]=18;
f[7][2][1][5]=17;
f[7][2][1][7]=17;
f[7][2][2][1]=6;
f[7][2][2][2]=7;
f[7][2][2][5]=16;
f[7][2][2][6]=15;
f[7][2][2][7]=16;
f[7][2][3][1]=5;
f[7][2][3][3]=5;
f[7][2][3][6]=14;
f[7][2][4][1]=4;
f[7][2][4][2]=3;
f[7][2][4][3]=4;
f[7][2][4][4]=5;
f[7][2][4][6]=13;
f[7][2][4][7]=14;
f[7][2][5][2]=2;
f[7][2][5][4]=6;
f[7][2][5][6]=12;
f[7][2][5][7]=13;
f[7][2][6][2]=1;
f[7][2][6][4]=7;
f[7][2][6][6]=11;
f[7][2][6][7]=12;
f[7][2][7][2]=0;
f[7][2][7][4]=8;
f[7][2][7][5]=9;
f[7][2][7][6]=10;
f[7][2][7][7]=11;
f[7][4][1][1]=9;
f[7][4][1][2]=10;
f[7][4][1][4]=10;
f[7][4][1][5]=9;
f[7][4][1][7]=9;
f[7][4][2][1]=8;
f[7][4][2][2]=9;
f[7][4][2][5]=8;
f[7][4][2][6]=7;
f[7][4][2][7]=8;
f[7][4][3][1]=7;
f[7][4][3][3]=5;
f[7][4][3][6]=6;
f[7][4][4][1]=6;
f[7][4][4][2]=5;
f[7][4][4][3]=4;
f[7][4][4][4]=3;
f[7][4][4][6]=5;
f[7][4][4][7]=6;
f[7][4][5][2]=6;
f[7][4][5][4]=2;
f[7][4][5][6]=4;
f[7][4][5][7]=5;
f[7][4][6][2]=7;
f[7][4][6][4]=1;
f[7][4][6][6]=3;
f[7][4][6][7]=4;
f[7][4][7][2]=8;
f[7][4][7][4]=0;
f[7][4][7][5]=1;
f[7][4][7][6]=2;
f[7][4][7][7]=3;
f[7][5][1][1]=10;
f[7][5][1][2]=11;
f[7][5][1][4]=9;
f[7][5][1][5]=8;
f[7][5][1][7]=8;
f[7][5][2][1]=9;
f[7][5][2][2]=10;
f[7][5][2][5]=7;
f[7][5][2][6]=6;
f[7][5][2][7]=7;
f[7][5][3][1]=8;
f[7][5][3][3]=6;
f[7][5][3][6]=5;
f[7][5][4][1]=7;
f[7][5][4][2]=6;
f[7][5][4][3]=5;
f[7][5][4][4]=4;
f[7][5][4][6]=4;
f[7][5][4][7]=5;
f[7][5][5][2]=7;
f[7][5][5][4]=3;
f[7][5][5][6]=3;
f[7][5][5][7]=4;
f[7][5][6][2]=8;
f[7][5][6][4]=2;
f[7][5][6][6]=2;
f[7][5][6][7]=3;
f[7][5][7][2]=9;
f[7][5][7][4]=1;
f[7][5][7][5]=0;
f[7][5][7][6]=1;
f[7][5][7][7]=2;
f[7][6][1][1]=11;
f[7][6][1][2]=12;
f[7][6][1][4]=8;
f[7][6][1][5]=7;
f[7][6][1][7]=7;
f[7][6][2][1]=10;
f[7][6][2][2]=11;
f[7][6][2][5]=6;
f[7][6][2][6]=5;
f[7][6][2][7]=6;
f[7][6][3][1]=9;
f[7][6][3][3]=7;
f[7][6][3][6]=4;
f[7][6][4][1]=8;
f[7][6][4][2]=7;
f[7][6][4][3]=6;
f[7][6][4][4]=5;
f[7][6][4][6]=3;
f[7][6][4][7]=4;
f[7][6][5][2]=8;
f[7][6][5][4]=4;
f[7][6][5][6]=2;
f[7][6][5][7]=3;
f[7][6][6][2]=9;
f[7][6][6][4]=3;
f[7][6][6][6]=1;
f[7][6][6][7]=2;
f[7][6][7][2]=10;
f[7][6][7][4]=2;
f[7][6][7][5]=1;
f[7][6][7][6]=0;
f[7][6][7][7]=1;
f[7][7][1][1]=12;
f[7][7][1][2]=13;
f[7][7][1][4]=9;
f[7][7][1][5]=8;
f[7][7][1][7]=8;
f[7][7][2][1]=11;
f[7][7][2][2]=12;
f[7][7][2][5]=7;
f[7][7][2][6]=6;
f[7][7][2][7]=7;
f[7][7][3][1]=10;
f[7][7][3][3]=8;
f[7][7][3][6]=5;
f[7][7][4][1]=9;
f[7][7][4][2]=8;
f[7][7][4][3]=7;
f[7][7][4][4]=6;
f[7][7][4][6]=4;
f[7][7][4][7]=3;
f[7][7][5][2]=9;
f[7][7][5][4]=5;
f[7][7][5][6]=3;
f[7][7][5][7]=2;
f[7][7][6][2]=10;
f[7][7][6][4]=4;
f[7][7][6][6]=2;
f[7][7][6][7]=1;
f[7][7][7][2]=11;
f[7][7][7][4]=3;
f[7][7][7][5]=2;
f[7][7][7][6]=1;
f[7][7][7][7]=0;
scanf("%d",&n);
while(n--)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d\n",f[a][b][c][d]);
}
return 0;
}