牛和 John

简介: 牛和 John

纯模拟题,先定义可能需要的变量

int a[12][12], cx, cy, fx, fy; // 障碍物, 牛横纵, John横纵

char map; // 地图

int move_s; // 统计移动次数

int mf, mc; // John的移动方向, 牛的移动方向(0上 1右 2下 3左)

int step; // 一步一步走

int turn; // 转弯  

首先输入地图

for (int i = 1; i <= 10; i++)
  {
    for (int j = 1; j <= 10; j++)
    {
      cin >> map; // 输入地图
      if (map == '*') // 障碍物
      {
        a[j][i] = -1;
      }
      if (map == 'C') // 记录牛的初始位置
      {
        cx = j;
        cy = i;
      }
      if (map == 'F') // 记录John的初始位置
      {
        fx = j;
        fy = i;
      }
    }
  }


现在开始模拟

  while ((cx != fx || cy != fy) && move_s < 200000)
  {
        
 
 
    }

先来模拟牛的移动

if (mc == 0 && step == 0) // 牛向北移动
{
  step = 1; //一步一步走
  if (a[cx][cy - 1] != -1 && cy > 1)
  {
    turn = 1;
    cy--; // 在地图上为向上走
  }
  if (turn == 0) // 证明该转弯啦
  {
    mc++; // 顺时针下一分钟该向右(东)移动
  }
}
if (mc == 1 && step == 0) // 牛向东移动
{
  step = 1; //一步一步走
  if (a[cx + 1][cy] != -1 && cx < 10)
  {
    turn = 1;
    cx++; // 在地图上为向右走
  }
  if (turn == 0) // 证明该转弯啦
  {
    mc++; // 顺时针下一分钟该向下(南)移动
  }
}
if (mc == 2 && step == 0) // 牛向南移动
{
  step = 1;//一步一步走
  if (a[cx][cy + 1] != -1 && cy < 10)
  {
    turn = 1;
    cy++; // 在地图上为向下走
  }
  if (turn == 0) // 证明该转弯啦
  {
    mc++; // 顺时针下一分钟该向左(西)移动
  }
}
if (mc == 3 && step == 0) // 牛向西移动
{
  step = 1; //一步一步走
  if (a[cx - 1][cy] != -1 && cx > 1)
  {
    turn = 1;
    cx--; // 在地图上为向左走
  }
  if (turn == 0)
  {
    mc++;
  }
}

John的移动方式和牛一样

if (mf == 0 && step == 0) // John向北移动
{
  step = 1; //一步一步走
  if (a[fx][fy - 1] != -1 && fy > 1)
  {
    turn = 1;
    fy--; // 在地图上为向上走
  }
  if (turn == 0) // 证明该转弯啦
  {
    mf++; // 顺时针下一分钟该向右(东)移动
  }
}
if (mf == 1 && step == 0) // John向东移动
{
  step = 1; //一步一步走
  if (a[fx + 1][fy] != -1 && fx < 10)
  {
    turn = 1;
    fx++; // 在地图上为向右走
  }
  if (turn == 0) // 证明该转弯啦
  {
    mf++; // 顺时针下一分钟该向下(南)移动
  }
}
if (mf == 2 && step == 0) // John向南移动
{
  step = 1; //一步一步走
  if (a[fx][fy + 1] != -1 && fy < 10)
  {
    turn = 1;
    fy++; // 在地图上为向下走
  }
  if (turn == 0) // 证明该转弯啦
  {
    mf++; // 顺时针下一分钟该向左(西)移动
  }
}
if (mf == 3 && step == 0) // John向西移动
{
  step = 1; //一步一步走
  if (a[fx - 1][fy] != -1 && fx > 1)
  {
    turn = 1;
    fx--; // 在地图上为向左走
  }
  if (turn == 0)
  {
    mf++;
  }
}
#define  _CRT_SECURE_NO_WARNINGS 1
 
#include <stdio.h>
#include <iostream>
using namespace std;
 
int a[12][12], cx, cy, fx, fy; // 障碍物, 牛横纵, John横纵
char map; // 地图
int move_s; // 统计移动次数
int mf, mc; // John的移动方向, 牛的移动方向(0上 1右 2下 3左)
int step; // 一步一步走
int turn; // 转弯
 
int main()
{
  for (int i = 1; i <= 10; i++)
  {
    for (int j = 1; j <= 10; j++)
    {
      cin >> map; // 输入地图
      if (map == '*') // 障碍物
      {
        a[j][i] = -1;
      }
      if (map == 'C') // 记录牛的初始位置
      {
        cx = j;
        cy = i;
      }
      if (map == 'F') // 记录John的初始位置
      {
        fx = j;
        fy = i;
      }
    }
  }
  while ((cx != fx || cy != fy) && move_s < 200000)
  {
    mf %= 4; // 总共四个方向,所以模4判断
    mc %= 4;
    move_s++; // 统计行走次数
    step = 0; // 判断是否移动
    turn = 0; // 判断是否转弯
    // 牛移动
    if (mc == 0 && step == 0) // 牛向北移动
    {
      step = 1; //一步一步走
      if (a[cx][cy - 1] != -1 && cy > 1)
      {
        turn = 1;
        cy--; // 在地图上为向上走
      }
      if (turn == 0) // 证明该转弯啦
      {
        mc++; // 顺时针下一分钟该向右(东)移动
      }
    }
    if (mc == 1 && step == 0) // 牛向东移动
    {
      step = 1; //一步一步走
      if (a[cx + 1][cy] != -1 && cx < 10)
      {
        turn = 1;
        cx++; // 在地图上为向右走
      }
      if (turn == 0) // 证明该转弯啦
      {
        mc++; // 顺时针下一分钟该向下(南)移动
      }
    }
    if (mc == 2 && step == 0) // 牛向南移动
    {
      step = 1;//一步一步走
      if (a[cx][cy + 1] != -1 && cy < 10)
      {
        turn = 1;
        cy++; // 在地图上为向下走
      }
      if (turn == 0) // 证明该转弯啦
      {
        mc++; // 顺时针下一分钟该向左(西)移动
      }
    }
    if (mc == 3 && step == 0) // 牛向西移动
    {
      step = 1; //一步一步走
      if (a[cx - 1][cy] != -1 && cx > 1)
      {
        turn = 1;
        cx--; // 在地图上为向左走
      }
      if (turn == 0)
      {
        mc++;
      }
    }
    // John移动
    step = 0;
    turn = 0;
    if (mf == 0 && step == 0) // John向北移动
    {
      step = 1; //一步一步走
      if (a[fx][fy - 1] != -1 && fy > 1)
      {
        turn = 1;
        fy--; // 在地图上为向上走
      }
      if (turn == 0) // 证明该转弯啦
      {
        mf++; // 顺时针下一分钟该向右(东)移动
      }
    }
    if (mf == 1 && step == 0) // John向东移动
    {
      step = 1; //一步一步走
      if (a[fx + 1][fy] != -1 && fx < 10)
      {
        turn = 1;
        fx++; // 在地图上为向右走
      }
      if (turn == 0) // 证明该转弯啦
      {
        mf++; // 顺时针下一分钟该向下(南)移动
      }
    }
    if (mf == 2 && step == 0) // John向南移动
    {
      step = 1; //一步一步走
      if (a[fx][fy + 1] != -1 && fy < 10)
      {
        turn = 1;
        fy++; // 在地图上为向下走
      }
      if (turn == 0) // 证明该转弯啦
      {
        mf++; // 顺时针下一分钟该向左(西)移动
      }
    }
    if (mf == 3 && step == 0) // John向西移动
    {
      step = 1; //一步一步走
      if (a[fx - 1][fy] != -1 && fx > 1)
      {
        turn = 1;
        fx--; // 在地图上为向左走
      }
      if (turn == 0)
      {
        mf++;
      }
    }
  }
  if (move_s == 200000)
    printf("0\n");
  else
    printf("%d\n", move_s);
  return 0;
}


创作不易,感谢各位大佬支持


目录
相关文章
|
6月前
|
Python
Python实现Tom与Jerry
Python实现Tom与Jerry
61 0
|
数据安全/隐私保护 Python
BUUCTF Alice与Bob 1
BUUCTF Alice与Bob 1
148 0
|
机器学习/深度学习 人工智能
CF547B Mike and Feet
CF547B Mike and Feet
68 0
|
程序员 Windows
|
SQL Java 中间件
SELECT * FROM GIRLS WHERE AGE BETWEEN 20 AND 24 ...
阿粉最近看到一张图,如上所示,原本只是一个搞笑的图,但是在阿粉看来这分明是个渣男啊!一句普通的 SQL 语句SELECT * FROM GIRLS WHERE AGE BETWEEN 20 AND 24 AND BOYFRIEND IS NULL,也有很多内涵! 什么?没看出来?来,阿粉带你品品。
SELECT * FROM GIRLS WHERE AGE BETWEEN 20 AND 24 ...
|
SQL 安全 Unix
John the Ripper 密码破解者
启明在中国移动驻场时由于那边缺人,师傅叫我过去帮两天忙。启明的在用John这个工具碰撞云服务器远程登录的密码,以前我只听过彩虹表、撞库、脱裤等名词并没有实际接触过所以还是有点陌生。今天用到这个工具我就记录一下它应该也是彩虹表碰撞的一种吧。
493 0
John the Ripper 密码破解者
|
弹性计算 Java 关系型数据库
New Boy
New boy是我最喜欢的朴树的歌,我是一个在天坑专业挣扎的学生,自己怀揣着从小对计算机的热爱走上转行之路,从前的我做错了很多的事,现在也深深知道社会的残酷和“选择大于努力”的真理。在之前暗无天日的迷茫和徘徊中,我坚持了下来,在计算机这条路上我终于看到了未来的曙光,也深深理解了乔帮主说的,“要找到自己喜欢并擅长的事情,并为之奋斗终身,如果还没有找到,那就继续找”。我现在可以肯定的说,我找到了,并同时作为向过去的告别,我给这篇文章起名New boy,希望自己能重新开始,未来路还很长,请多多指教!
411 0
New Boy
|
JavaScript UED 前端开发
|
XML Java 数据格式