zoukankan      html  css  js  c++  java
  • hdu 4740

    题目链接

    老虎左拐,老鼠右拐,碰到不能走的拐一次,如果还不能走就停下,自己走过的不能走,求相遇的坐标或-1

    一个停下之后,另一个还可以走

    #include <cstdio>
    #include <cstring>
    using namespace std;
    #define N 1005
    struct node
    {
        int x,y;
    }p[N*N],q[N*N];
    int visi[N][N],xy[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
    int n;
    int donkey(int x,int y,int d)
    {
        int step=1;
        while(!visi[x][y]&&x<n&&x>=0&&y<n&&y>=0)
        {
            p[step].x=x;p[step++].y=y;
            visi[x][y]=1;
            x=x+xy[d][0];y=y+xy[d][1];
            if(visi[x][y]||x<0||x>=n||y>=n||y<0)
            {
                x=x-xy[d][0];y=y-xy[d][1];
                d=(d+1)%4;
                x=x+xy[d][0];y=y+xy[d][1];
                if(visi[x][y]||x<0||x>=n||y>=n||y<0) break;
            }
    
        }
        return step-1;
    }
    
    int tiger(int x,int y,int d)
    {
        int step=1;
    
        while(!visi[x][y]&&x<n&&x>=0&&y<n&&y>=0)
        {
            q[step].x=x;q[step++].y=y;
            visi[x][y]=1;
            x=x+xy[d][0];y=y+xy[d][1];
            if(visi[x][y]||x<0||x>=n||y>=n||y<0)
            {
                x=x-xy[d][0];y=y-xy[d][1];
                d=(d+3)%4;
                x=x+xy[d][0];y=y+xy[d][1];
                if(visi[x][y]||x<0||x>=n||y>=n||y<0) break;
            }
    
        }
        return step-1;
    }
    
    int main()
    {
        int i,j,r1,c1,d1,r2,c2,d2,s1,s2,flag;
        while(scanf("%d",&n),n)
        {
            scanf("%d%d%d",&r1,&c1,&d1);
            scanf("%d%d%d",&r2,&c2,&d2);
            memset(visi,0,sizeof(visi));
            s1=donkey(r1,c1,d1);
            memset(visi,0,sizeof(visi));
            s2=tiger(r2,c2,d2);
            i=1;
            flag=0;
            while(i<=s1||i<=s2)
            {
                if(i>s1) {p[i].x=p[i-1].x;p[i].y=p[i-1].y;}
                if(i>s2) {q[i].x=q[i-1].x;q[i].y=q[i-1].y;}
                if(p[i].x==q[i].x&&p[i].y==q[i].y)
                {
                    printf("%d %d
    ",p[i].x,p[i].y);
                    flag=1;
                    break;
                }
                i++;
            }
            if(!flag) printf("-1
    ");
          /*  printf("%d
    ",s2);
    
            for(i=1;i<=s2;i++)
            {
                printf("%d %d
    ",q[i].x,q[i].y);
            }
            */
        }
        return 0;
    }


     

  • 相关阅读:
    Python
    C#中读写INI文件
    C#函数式编程
    TypeScript安装
    finally是否执行?finally何时执行?
    JavaScript对象、JSON对象、JSON字符串的区别
    webjars-jquery的引用
    spring boot 笔记--第三章
    两个常见tomcat警告分析
    JSch 实现 SSH 端口转发
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3331175.html
Copyright © 2011-2022 走看看