刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

移动距离

森林里住着 26 只小动物,它们分别对应字母 A 到 Z。这些小动物的家沿着一条直线排列,相邻两家之间的距离为 1。它们的排列顺序记作一个字符串 S。

现在,你要按顺序去拜访 A、B、C、……、Z。每次拜访时,你需要从当前动物的家移动到目标小动物的家。起初,你直接在动物 A 所处的位置。请计算到拜访完Z为止,需要移动的距离之和。

时间限制:1000ms,内存限制:256MB

输入格式

共一行,输入一串字符串 S。

输出格式

共一行,输出一个整数,表示从 A 出发到拜访完 Z 的最小总移动距离。


输入样例#1

ABCDEFGHIJKLMNOPQRSTUVWXYZ

输出样例#1

25

输入样例#2

VENFLQURTCWOAXMGJYIZDKSBHP

输出样例#2

231

数据范围:

S长度为 26。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

首先,我们需要理解题目的意思。我们需要计算从A出发到拜访完Z的最小总移动距离。由于每个小动物的家都在一条直线上,并且相邻两家之间的距离为1,我们可以简单地计算每个小动物到其前一个动物的距离之和。由于我们是从A开始的,所以总距离就是所有动物的位置之和减去一个动物的位置(即自己的位置)。我们可以使用一个简单的循环来遍历字符串并计算总距离。最后输出总距离即可。

解析:

假设字符串为S,长度为n,我们可以创建一个循环来遍历这个字符串。在每次迭代中,我们将当前字符的ASCII值减去字符’A’的ASCII值(得到它在序列中的位置),然后将这个值加到总距离上。循环结束后,我们得到的总距离就是我们需要的结果。因为我们的起始位置是A,所以我们需要从总距离中减去字符’A’的位置(即减去1)。下面是具体的C语言代码实现:

#include <stdio.h>

int main() {
    char S[27]; // 存储字符串,包括一个额外的空间用于'\0'字符
    int total_distance = 0; // 存储总移动距离
    int i; // 循环变量
    scanf("%s", S); // 输入字符串
    for (i = 0; S[i] != '\0'; i++) { // 循环遍历字符串直到遇到'\0'字符
        total_distance += S[i] - 'A' + 1; // 计算当前字符位置并累加到总距离上
    }
    total_distance -= 1; // 从总距离中减去起始位置(即字符'A'的位置)
    printf("%d", total_distance); // 输出结果
    return 0;
}
创作类型:
原创

本文链接:移动距离 森林里住着 26 只小动物,它们分别对应字母 A 到 Z。这些小动物的家沿着一条直线排列,

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share