zoukankan      html  css  js  c++  java
  • HDU 4452 Running Rabbits

    简单模拟

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <cmath>
    #include <string>
    using namespace std;
    
    int dir[4][2];
    
    struct X
    {
        int dir;
        int nowx;
        int nowy;
        int speed;
        int t;
    }Tom,Jerry;
    int N,K;
    
    void init()
    {
        dir[0][0]=-1; dir[0][1]=0;
        dir[1][0]=0; dir[1][1]=-1;
        dir[2][0]=+1; dir[2][1]=0;
        dir[3][0]=0; dir[3][1]=+1;
    }
    
    void read()
    {
        char s[5];
        scanf("%s",s);
        if(s[0]=='N') Tom.dir=0;
        if(s[0]=='W') Tom.dir=1;
        if(s[0]=='S') Tom.dir=2;
        if(s[0]=='E') Tom.dir=3;
        Tom.nowx=1; Tom.nowy=1;
    
        scanf("%d%d",&Tom.speed,&Tom.t);
    
        scanf("%s",s);
        if(s[0]=='N') Jerry.dir=0;
        if(s[0]=='W') Jerry.dir=1;
        if(s[0]=='S') Jerry.dir=2;
        if(s[0]=='E') Jerry.dir=3;
        Jerry.nowx=N; Jerry.nowy=N;
    
        scanf("%d%d",&Jerry.speed,&Jerry.t);
    }
    
    bool meet()
    {
        if(Tom.nowx==Jerry.nowx&&Tom.nowy==Jerry.nowy) return 1;
        return 0;
    }
    
    void TurnTom()
    {
        Tom.dir=(Tom.dir+1)%4;
    }
    
    void TurnJerry()
    {
        Jerry.dir=(Jerry.dir+1)%4;
    }
    
    
    void Swap()
    {
        swap(Tom.dir,Jerry.dir);
    }
    
    bool f(int x,int y)
    {
        if(x>=1&&x<=N&&y>=1&&y<=N) return 1;
        return 0;
    }
    void runTom()
    {
        for(int i=1;i<=Tom.speed;i++)
        {
            int NewX=Tom.nowx+dir[Tom.dir][0];
            int NewY=Tom.nowy+dir[Tom.dir][1];
            if(f(NewY,NewX))
            {
                Tom.nowx=NewX;
                Tom.nowy=NewY;
            }
            else
            {
                Tom.dir=(Tom.dir+2)%4;
                NewX=Tom.nowx+dir[Tom.dir][0];
                NewY=Tom.nowy+dir[Tom.dir][1];
                Tom.nowx=NewX;
                Tom.nowy=NewY;
            }
        }
    }
    
    void runJerry()
    {
        for(int i=1;i<=Jerry.speed;i++)
        {
            int NewX=Jerry.nowx+dir[Jerry.dir][0];
            int NewY=Jerry.nowy+dir[Jerry.dir][1];
            if(f(NewY,NewX))
            {
                Jerry.nowx=NewX;
                Jerry.nowy=NewY;
            }
            else
            {
                Jerry.dir=(Jerry.dir+2)%4;
                NewX=Jerry.nowx+dir[Jerry.dir][0];
                NewY=Jerry.nowy+dir[Jerry.dir][1];
                Jerry.nowx=NewX;
                Jerry.nowy=NewY;
            }
        }
    }
    
    
    int main()
    {
        init();
        while(~scanf("%d",&N))
        {
            if(!N) break;
            read();
            scanf("%d",&K);
            for(int i=0;i<K;i++)
            {
                if(meet()) Swap();
                else
                {
                    if(i%Tom.t==0&&i!=0) TurnTom();
                    if(i%Jerry.t==0&&i!=0) TurnJerry();
                }
    
                runTom();
                runJerry();
              //   printf("--- %d %d
    ",Tom.nowx,Tom.nowy);
             //   printf("--- %d %d
    ",Jerry.nowx,Jerry.nowy);
              //  printf("----
    ");
            }
            printf("%d %d
    ",Tom.nowx,Tom.nowy);
            printf("%d %d
    ",Jerry.nowx,Jerry.nowy);
        }
        return 0;
    }
  • 相关阅读:
    Java学习9
    Windows环境下实现WireShark抓取HTTPS
    WireShark新手使用教程
    charles使用教程
    charles
    知道做到
    Appium 自动化测试改造思路
    今日总结
    今日总结
    今日总结
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5164410.html
Copyright © 2011-2022 走看看