文章

37

粉丝

0

获赞

7

访问

3.5k

头像
【2020年】408计算机统考真题模拟考试 - 第41题答案笔记
数据结构
发布于2025年5月20日 21:37
阅读数 70

计算机考研408统考历年真题及答案解析

(1) 利用三个指针指向每个集合的起始索引0,再设置一个变量min记录最小距离,不断比对三个数组指针所在元素的最小者并计算距离,然后让最小的指针后移一位(若大小相同,则集合名称数字较小者指针后移,例如S1和S2的元素大小相同,S1指针后移),直到某个指针到达集合尽头(指针值 = 集合长度)结束,返回min。

(2) C语言:
#include <stdio.h>

#include <stdlib.h>
#include <limits.h>

int solution(int S1[], int S2[], int S3[], int l1, int l2, int l3) {    // l1、l2、l3分别代表S1、S2、S3的长度

    int ptr1 = 0, ptr2 = 0, ptr3 = 0;

    int min = INT_MAX;    // 记录最小距离

    while (ptr1 != l1 && ptr2 != l2 && ptr3 != l3) {
        int a = S1[ptr1], b = S2[ptr2], c = S3[ptr3];

        int dis = abs(a - b) + abs(b - c) + abs(c - a);    // 距离

        if (dis < min) min = dis;    // 如果当前距离更小,则更新最小距离

 

        int minOne = 1, minValue = a;    // minOne = i,则Si对应指针后移

        if (b < minValue) {
  &nb...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发