学习笔记:

用二维数组标识状态来记录地图

使用^来判定相同相异

数组名做指针时不能反复调用(原因不明待解决)

AC代码:

不足:没利用状态专属值去判定死循环!!!!

#include<iostream>
#include<stdio.h>
using namespace std;
int map[12][12];
int f[3];
int c[3];

int main()
{
    char t;
    int i, j;
    f[0] = 0; c[0] = 0;
    for (i = 1; i < 11; ++i)
    {
        for (j = 1; j < 11; ++j)
        {
            cin >> t;
            if (t == '.')
            {
                map[i][j] = 1;
            }
            else if (t == 'F')
            {
                map[i][j] = 1;
                f[1] = i; f[2] = j;
            }
            else if (t == 'C')
            {
                map[i][j] = 1;
                c[1] = i; c[2] = j;
            }
        }
    }//将图录入map数组中
    /*cout << f[1] << ":" << f[2] << "-" << f[0] << endl;
    cout << c[1] << ":" << c[2] << "-" << c[0] << endl;
    turn(f);
    turn(c);
    cout << f[1] << ":" << f[2] << "-" << f[0] << endl;
    cout << c[1] << ":" << c[2] << "-" << c[0] << endl;
    turn(f);
    turn(c);
    cout << f[1] << ":" << f[2] << "-" << f[0] << endl;
    cout << c[1] << ":" << c[2] << "-" << c[0] << endl;
    turn(f);
    turn(c);
    cout << f[1] << ":" << f[2] << "-" << f[0] << endl;
    cout << c[1] << ":" << c[2] << "-" << c[0] << endl;*/
    int flag = 0;
    int time = 0;
    while ((f[1] != c[1] || f[2] != c[2]) && time < 200000)
    {
        if (f[0] % 4 == 0)
        {
            int x, y;
            x = f[1] - 1; y = f[2];
            if (map[x][y] ^ 1)
            {
                f[0] = f[0] + 1;
            }
            else
            {
                f[1] = x; f[2] = y;
            }
        }
        else if (f[0] % 4 == 1)
        {
            int x, y;
            x = f[1]; y =f[2] + 1;
            if (map[x][y] ^ 1)
            {
                f[0] = f[0] + 1;
            }
            else
            {
                f[1] = x; f[2] = y;
            }
        }
        else if (f[0] % 4 == 2)
        {
            int x, y;
            x = f[1] + 1; y = f[2];
            if (map[x][y] ^ 1)
            {
                f[0] = f[0] + 1;
            }
            else
            {
                f[1] = x; f[2] = y;
            }
        }
        else if (f[0] % 4 == 3)
        {
            int x, y;
            x = f[1]; y = f[2] - 1;
            if (map[x][y] ^ 1)
            {
                f[0] = f[0] + 1;
            }
            else
            {
                f[1] = x; f[2] = y;
            }
        }
        //========================
        if (c[0] % 4 == 0)
        {
            int x, y;
            x = c[1] - 1; y = c[2];
            if (map[x][y] ^ 1)
            {
                c[0] = c[0] + 1;
            }
            else
            {
                c[1] = x; c[2] = y;
            }
        }
        else if (c[0] % 4 == 1)
        {
            int x, y;
            x = c[1]; y = c[2] + 1;
            if (map[x][y] ^ 1)
            {
                c[0] = c[0] + 1;
            }
            else
            {
                c[1] = x; c[2] = y;
            }
        }
        else if (c[0] % 4 == 2)
        {
            int x, y;
            x = c[1] + 1; y = c[2];
            if (map[x][y] ^ 1)
            {
                c[0] = c[0] + 1;
            }
            else
            {
                c[1] = x; c[2] = y;
            }
        }
        else if (c[0] % 4 == 3)
        {
            int x, y;
            x = c[1]; y = c[2] - 1;
            if (map[x][y] ^ 1)
            {
                c[0] = c[0] + 1;
            }
            else
            {
                c[1] = x; c[2] = y;
            }
        }
        time += 1;

}
    if (time == 200000)
    {
        cout << "0";
    }
    else { cout << time; }

return 0;
}

P1518两只塔姆沃斯牛相关推荐

  1. P1518 两只塔姆沃斯牛 The Tamworth Two(模拟)

    P1518 两只塔姆沃斯牛 The Tamworth Two 219通过 418提交 题目提供者该用户不存在 标签 USACO 难度 普及+/提高 时空限制 1s / 128MB 2017/4/21 ...

  2. 洛谷 P1518 两只塔姆沃斯牛 The Tamworth Two

    P1518 两只塔姆沃斯牛 The Tamworth Two 题目背景 题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和John). 追击在1 ...

  3. P1518 两只塔姆沃斯牛 The Tamworth Two(简单的搜索题)

    题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和John). 追击在10x10的平面网格内进行.一个格子可以是: 一个障碍物, 两头牛(它们总 ...

  4. 洛谷——P1518 两只塔姆沃斯牛 The Tamworth Two

    https://www.luogu.org/problem/show?pid=1518 题目背景 题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为( ...

  5. 洛古P1518—两只塔姆沃斯牛

    题目描述 两只牛逃跑到了森林里.Farmer John 开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和 John). 追击在 10×1010 \times 1010×10 的平面网格内 ...

  6. 洛谷P1518 两只塔姆沃斯牛

    1.构建地图 (矩阵读入)矩阵边缘围上一圈障碍物: 2.模拟F和C的运动     先判断前方是否有障碍物     如果没有障碍物,前进一步     如果有障碍物,改变方向     向北:x-1,y: ...

  7. 洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

    两只塔姆沃斯牛 The Tamworth Two 一.题目信息 1.题目链接 2.题目详情 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 二.题目详解 1.逻辑 2.代码 (1 ...

  8. 【菜鸟进阶之路】P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two - 洛谷

    一.题目部分 选自洛谷: P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 二.解题过程 思路 见"提交AC答案"部分给出的注释 提交AC答案 #i ...

  9. java:P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

    洛谷题目:P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 题目如下: 思路: 简单的模拟,不过像这种上下左右的移动方式倒是可以留意下,我是用%的方式来改变的. 我的代 ...

最新文章

  1. phpstrpos不存在_PHP主页显示方法不存在。这是什么问题,大神帮我看看
  2. POJ 1850 Code(组合数学)
  3. Elasticsearch 索引数据多了怎么办,如何调优,部署?
  4. ceph auth get_CPB羽梦幻境体验展来了!快来GET限量产品!
  5. c++ msflexgrid 使用_丝杠支座组件C
  6. Windows平台上安装搭建iPhone/iPad的开发环境
  7. 史上最大,人工智能算法模型 GPT-3 问世,这意味着什么?
  8. Some thoughts on dfs
  9. ArcGIS Server服务介绍与服务在js中的使用
  10. python适合自学编程吗-没编程基础可以学python吗
  11. 2018CCPC网络赛
  12. MySql Odbc等驱动下载地址分享下
  13. 谈谈对三大框架的理解
  14. 华为eNSP-基本配置指令
  15. comsol与matlab联合,联合应用COMSOL和matlab.pdf
  16. 最强蜗牛服务器维护祷告什么时候领取都一样,最强蜗牛猴子祷告奖励什么时候领...
  17. 用诺模图可视化你的模型
  18. 计算机word表格计算教程F9,Word表格数据计算与域操作
  19. [附源码]计算机毕业设计Python+uniapp学生选课APP3cnsl(程序+lw+APP+远程部署)
  20. 光谱共焦传感器测量的特点

热门文章

  1. 嘿siri_嘿siri我可以帮你吗
  2. 二十分钟带你了解JVM性能调优与实战进阶
  3. 关于深度相机与双目相机的初步了解
  4. 华为RH2285 服务器配置笔记
  5. OpenCV进阶(11)使用 OpenCV实现哈哈镜
  6. 异构计算平台(1)--了解
  7. Comparator比较器
  8. 运动无线耳机推荐,值得入手的六款运动耳机
  9. win系统电脑如何打开sketch?
  10. linux运维面试题(附答案)