解题思路: 首先计算小美从起点到终点的直线距离,即从x到y的距离。 然后计算小美从起点顺时针走一圈再到终点的距离,即从x到n再到1再到y的距离。 最后取这两个距离的最小值作为答案。

具体步骤:

  1. 读取输入的n、ai、x和y。
  2. 计算从x到y的直线距离dist1。
  3. 计算从x到n再到1再到y的距离dist2。即先计算从x到n的距离sum1,再计算从1到y的距离sum2,最后将sum1和sum2相加得到dist2。
  4. 将dist1和dist2比较,取较小值作为答案。
  5. 输出答案。

代码实现如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = scanner.nextInt();
        }
        int x = scanner.nextInt();
        int y = scanner.nextInt();

        int dist1 = Math.abs(x - y);
        int dist2 = 0;
        for (int i = x; i != y; i = (i % n) + 1) {
            dist2 += a[i-1];
        }
        dist2 += a[n-1];

        int answer = Math.min(dist1, dist2);
        System.out.println(answer);
    }
}

时间复杂度分析: 计算直线距离的时间复杂度为O(1)。 计算环形距离的时间复杂度为O(n)。 因此,总的时间复杂度为O(n)

java有一个环形的公路上面共有n站现在给定了顺时针第占到第i+ 1站之间的距离特殊的也给出了第n站到第 1 站的距离。小美想沿着公路第x站走到第Y站她想知道最短的距离是多少1输入描述第一行输入一个正整数n代表站的数量。第二行输入n个正整数ai前n-1个数代表顺时针沿着公路走i站到第i+ 1站之间的距离;最后一个正整数代表顺时针沿着公路走第n站到第1站的距离第三行输入两个正整数x和y代表小美的出发

原文地址: https://www.cveoy.top/t/topic/iBnP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录