• 推箱子


    5
    5 5
    0 1 0 0 0
    0 0 0 0 0 
    0 2 0 9 0
    0 0 0 0 0
    0 9 -1 0 -2
    4 6
    -1 -2 1 0 9 0
    0 2 0 0 0 0 
    0 0 0 0 0 0 
    0 0 0 0 0 0 
    7 4
    0 0 0 0 
    0 0 0 9
    2 0 1 0
    0 0 9 0
    0 9 0 0
    0 0 0 0 
    -1 0 -2 0
    4 7 
    0 0 0 0 0 0 0
    0 0 1 9 0 0 0
    0 0 0 0 0 0 0
    9 2 -1 9 0 0 -2
    10 10
    0 0 0 0 0 0 0 9 -1 0
    0 9 -2 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 9
    0 0 0 9 0 0 0 0 0 0
    1 0 0 0 0 0 0 0 0 0
    0 0 0 9 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0
    0 0 0 2 0 0 0 0 9 9
    9 0 0 0 0 0 9 0 0 0
    
    #include<stdio.h>
    int map[99][99];
    int mov1[4]={1,0,-1,0};
    int mov2[4]={0,1,0,-1};
    int minbu=99999;
    int cass;
    int X;
    int Y;
    int xx1;
    int yy1;
    int xx2;
    int yy2;
    int exx1;
    int eyy1;
    int exx2;
    int eyy2;
    int fangxiang[99];
    void zoulu(int x1,int y1,int x2,int y2,int step)
    {
        if(minbu<step)
            return;
        if(x1==exx1&&y1==eyy1&&x2==exx2&&y2==eyy2&&step<=8)
        {
            if(minbu>step)
                minbu=step;
            return;
    
        }
        if(step==8)
            return;
        for(int i=0;i<4;i++)
        {
            int nx1=x1;
            int ny1=y1;
            int nx2=x2;
            int ny2=y2;
            int lu1=0;
            int lu2=0;
    
                while(map[nx1][ny1]!=9)
                {
                    nx1=nx1+mov1[i];
                    ny1=ny1+mov2[i];
                    if(nx1<0||nx1>=X||ny1<0||ny1>=Y)
                    {
                        
                        break;
                    }
                    lu1++;
                }
                    nx1=nx1-mov1[i];
                    ny1=ny1-mov2[i];
                
            
            
    
                
    
                while(map[nx2][ny2]!=9)
                {
                    nx2=nx2+mov1[i];
                    ny2=ny2+mov2[i];
                    if(nx2<0||nx2>=X||ny2<0||ny2>=Y)
                    {
                        
                        break;
                    }
                    lu2++;
                }
    
    
                    nx2=nx2-mov1[i];
                    ny2=ny2-mov2[i];
                
            
            if(nx1==nx2&&ny1==ny2)
            {
                if(lu1>lu2)
                {
                    nx1=nx1-mov1[i];
                    ny1=ny1-mov2[i];
                }
                else
                {
                    nx2=nx2-mov1[i];
                    ny2=ny2-mov2[i];
                }
            }
    
    
            zoulu(nx1,ny1,nx2,ny2,step+1);
        }
    }
    int main()
    {
        freopen("in.txt","r",stdin);
        scanf("%d",&cass);
        while(cass--)
        {
            minbu=99999;
            scanf("%d%d",&X,&Y);
            for(int i=0;i<X;i++)
            {
                for(int j=0;j<Y;j++)
                {
                    scanf("%d",&map[i][j]);
                    if(map[i][j]==1)
                    {
                        xx1=i;
                        yy1=j;
                        map[i][j]=0;
                    }
                    else if(map[i][j]==2)
                    {
                        xx2=i;
                        yy2=j;
                        map[i][j]=0;
                    }
                    else if(map[i][j]==-1)
                    {
                        exx1=i;
                        eyy1=j;
                    }
                    else if(map[i][j]==-2)
                    {
                        exx2=i;
                        eyy2=j;
                    }
                }
            }
            zoulu(xx1,yy1,xx2,yy2,0); 
            if(minbu==99999)
                printf("-1
    ");
            else
            printf("%d
    ",minbu);
        }
        return 0;
    }
  • 相关阅读:
    控制流测试与条件测试
    12306的“短信公众号”到底是个啥?
    ISTQB名词辨析
    ISTQB TA
    启动Chrome时自动开启开发者模式
    LoadRunner Community Edition 12.60 无法获取Community License
    用言的活用声调变化规则
    ISTQB TTA大纲中提到的参考书目
    Java调用方法参数究竟是传值还是传址?
    Java中的Lambda表达式简介及应用
  • 原文地址:https://www.cnblogs.com/452035305qq/p/6288462.html
Copyright © 2020-2023  润新知