ACM大赛试题及详细答案.docxVIP

  • 7
  • 0
  • 约7千字
  • 约 10页
  • 2026-04-18 发布于河北
  • 举报

ACM大赛试题及详细答案

试题1:数组元素的最小距离

题干

给定一个整数数组arr,找出数组中两个不同元素之间的最小距离(距离定义为两个元素下标之差的绝对值)。若数组长度小于2,输出-1;若存在多个最小距离,输出任意一个即可。

输入:第一行输入一个整数n(1≤n≤100000),表示数组长度;第二行输入n个整数,用空格分隔。

输出:最小距离,若无法计算则输出-1。

示例输入1:

6

131421

示例输出1:1

示例输入2:

3

5810

示例输出2:1

示例输入3:

1

7

示例输出3:-1

详细答案

1.解题思路

核心思路:最小距离一定出现在相邻元素之间(反证法:若存在两个非相邻元素ijk,arr[i]与arr[k]的距离为k-i,而arr[i]与arr[j]的距离为j-i,arr[j]与arr[k]的距离为k-j,两者均小于k-i,因此最小距离不可能是非相邻元素)。因此,只需遍历数组一次,计算每对相邻元素的下标差(固定为1)对应的距离,记录最小值即可。

边界处理:n2时直接输出-1;n≥2时,初始化最小距离为一个较大值(如n,因为最大可能距离为n-1),遍历数组从下标1到n-1,每次计算当前元素与前一个元素的下标差(1),更新最小距离,最终输出最小距离。

2.代码实现(C++)

c++

#includeiostream

#includevector

#

文档评论(0)

1亿VIP精品文档

相关文档