题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的距离为 2,L 和 Q 的距离为 5。
对于一个字符串,我们称字符串中两两字符之间的距离之和为字符串的内部距离。
例如:ZOO 的内部距离为 22,其中 Z 和 O 的距离为 11。
请问,LANQIAO 的内部距离是多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
所需变量
char arr[8] = “LANQIAO”;//初始化字符数组arr
int sum = 0;//代表距离和,初始化为0
int i,j;//循环变量
思路:首先我们要了解大写字母的aciis码,对于A来讲就是65,以此类推,我们不难发现,B是66,每次一个字母的aciis都是+1,因此我们可以直接强制类型转换,让其进行相减,比如C-A = 67-65 = 2;这个2也正是我们想求的距离,因此我们可以从第一个开始,不断往后减每个字符,当得到第一个字符对后面所有字符的结果后,再让第二个字符向后面求距离,求距离的时候记得累加
for(i = 0;i<7;i++){for(j = i+1;j<7;j++){sum += abs(arr[i] - arr[j]);}}
完整代码如下(编译器是dev,语言是C语言):
#include
using namespace std;
int main()
{char arr[8] = "LANQIAO";int sum = 0,i,j;for(i = 0;i<7;i++){for(j = i+1;j<7;j++){sum += abs(arr[i] - arr[j]);}}cout<