lza6p 2020-03-04 21:05 采纳率: 0%
浏览 215
已采纳

c++基础问题,由于初学者,不会,求大神帮忙?

在电影里我们常常可以看到这样的镜头,通过在犯罪分子身上安装的信号发射装置,警方可以持续不断的知道犯罪分子的位置。现在请你根据下面这个地图来追踪罪犯(地图中字母固定、字母位置固定、地图四周是墙):

图片说明

图中每个字符代表一个位置,现在你不断地接收到一些位置信号,那么请你编写程序计算从信号开始到信号结束目标至少移动了多少距离,在本地图中,只能上下左右四个方向移动,相邻两个单元格的移动距离为1。例如接受信号如:BJOI,那么移动顺序为B-J-O-I,最少移动距离7。

  • 写回答

1条回答

  • threenewbee 2020-03-04 22:26
    关注

    问题解决的话,请点下采纳

    #include <iostream>
    using namespace std;
    
    int calc(char ch1, char ch2)
    {
        int n = 0;
        int x1 = (ch1 - 'A') % 4;
        int x2 = (ch2 - 'A') % 4;
        int y1 = (ch1 - 'A') / 4;
        int y2 = (ch2 - 'A') / 4;
        if (x1 > x2) n += x1 - x2; else n += x2 - x1;
        if (y1 > y2) n += y1 - y2; else n += y2 - y1;
        return n;
    }
    
    int main()
    {
        char route[20];
        cin >> route;
        int sum = 0;
        for (int i = 1; route[i] != 0; i++)
            sum += calc(route[i], route[i - 1]);
        cout << sum << endl;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制