zoukankan      html  css  js  c++  java
  • 蓝桥杯 Cat And Mouse

     猫和老鼠在10×10的方格中运动(如图3-6),例如:
      *...*.....
      ......*...
      ...*...*..
      ..........
      ...*.C....
      *.....*...
      ...*......
      ..M......*
      ...*.*....
      .*.*......
      C=猫(CAT)
      M=老鼠(MOUSE)
      *=障碍物
      .=空地
      猫和老鼠每秒中走一格,如果在某一秒末它们在同一格中,我们称它们“相遇”。
      注意:“对穿”是不算相遇的。猫和老鼠的移动方式相同:平时沿直线走,下一步如果会走到障碍物上去或者出界,就用1秒的时间做一个右转90°。一开始它们都面向北方。
      编程计算多少秒以后他们相遇。
    View problem
    #include <bits/stdc++.h>
    using namespace std;
    #define ri register int 
    #define M 100005
    
    struct dian{
        int x,y,f;
    }a,b;
    int p[15][15];
    
    void zou(dian &t)
    {
        if(t.f==0)
        {
            if(p[t.y-1][t.x]==1||t.y==1)
            {
               t.f++;
            }
            else
            {
                t.y--;
            }
            return ;
        }
        if(t.f==1)
        {
            if(p[t.y][t.x+1]==1||t.x==10)
            {
               t.f++;
            }
            else
            {
                t.x++;
            }
            return ;
        }
        if(t.f==2)
        {
            if(p[t.y+1][t.x]==1||t.y==10)
            {
               t.f++;
            }
            else
            {
                t.y++;
            }
            return ;
        }
        if(t.f==3)
        {
            if(p[t.y][t.x-1]==1||t.x==1)
            {
               t.f=0;
            }
            else
            {
                t.x--;
            }
            return ;
        }
    }
    int main(){
        
        for(ri i=1;i<=10;i++)
        for(ri j=1;j<=10;j++)
        {
            char c;
            cin>>c;
            if(c=='*')
            {
             p[i][j]=1;    
            }
            if(c=='.') continue;
            if(c=='C')
            {
                a.x=j;
                a.y=i;
            }
            if(c=='M')
            {
                b.x=j;
                b.y=i;
            }
        }
        int cent=0;
        while(1)
        {
            cent++;
            zou(a);
            zou(b);
            if(a.x==b.x&&a.y==b.y)
            {
                printf("%d\n",cent);
                break;
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    P1363-幻象迷宫
    P1582-倒水
    P2123-皇后游戏
    P1233-木棍加工
    P1052-过河
    P1541-乌龟棋
    P1736-创意吃鱼法
    P1417-烹调方案
    LeetCode--043--字符串相乘(java)
    LeetCode--041--缺失的第一个整数(java)
  • 原文地址:https://www.cnblogs.com/Lamboofhome/p/15690015.html
Copyright © 2011-2022 走看看