大家好,我是晴天学长,这是一道可以牢记的数学技巧题。
1) .摆玩具
2) .算法思路
1.创建一个Scanner对象以从用户读取输入。
2.从用户读取n和k的值,分别表示数组的大小和k的值。
3.创建一个大小为n的整数数组a,用于存储输入的数组元素。
4.使用循环从用户读取数组元素的值,并将其存储在a数组中。
5.创建一个大小为n的整数数组nums,用于存储相邻元素的差值。
6.通过对a数组的每个元素(除最后一个元素)进行相减,计算差值。
7.使用Arrays.sort方法对nums数组进行排序,以按升序排列差值。
8.初始化一个变量sum,用于存储最大的k-1个差值的和。
9.使用循环遍历nums数组的前n-k+1个元素。
10.将每个元素添加到sum变量中。
11.输出sum的值,表示最大的k-1个差值的和。
3).代码示例
import java.util.Arrays;
import java.util.Scanner;//分段的差不计入结果,所以要把最大的差找出来,完后分段排除它。
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int k = scanner.nextInt();int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = scanner.nextInt();}//计算差值数组。int[] nums = new int[n];for (int i = 0; i < n - 1; i++) {nums[i] = a[i + 1] - a[i];}//排序Arrays.sort(nums);//统计答案int sum = 0;for (int i = 0; i < a.length - k + 1; i++) {sum+= nums[i];}System.out.println(sum);}
}
4).总结
- 分段的差不计入结果。
试题链接: