NYOJ58 最少步数(深搜DFS+广搜BFS+剪枝)

题目:

最少步数

时间限制: 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,1

0表示道路,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
代码1(深搜):

#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;
}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值