当前位置:   article > 正文

HW算法题:整数对最小和_整数对最小和算法题

整数对最小和算法题
  1. /*
  2. * 整数对最小和
  3. * 给定两个整数数组array1、array2,数组元素按升序排列。假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素,
  4. * 并对取出的所有元素求和,计算和的最小值
  5. * 注意:两对元素如果对应于array1、array2中的两个下标均相同,则视为同一对元素。
  6. * 输入描述:
  7. * 输入两行数组array1、array2,每行首个数字为数组大小size(0 < size <= 100);
  8. * 0 < array1[i] <= 1000
  9. * 0 < array2[i] <= 1000
  10. * 接下来一行为正整数k
  11. * 0 < k <= array1.size() * array2.size()
  12. * 输出描述:
  13. * 满足要求的最小和
  14. * 示例1
  15. * 输入
  16. * 3 1 1 2
  17. * 3 1 2 3
  18. * 2
  19. * 输出
  20. * 4
  21. * 说明
  22. * 用例中,需要取2对元素
  23. * 取第一个数组第0个元素与第二个数组第0个元素组成1对元素[1,1];
  24. * 取第一个数组第1个元素与第二个数组第0个元素组成1对元素[1,1];
  25. * 求和为1+1+1+1=4,为满足要求的最小和
  26. */
  27. public static void main(String[] args) {
  28. //int[] a = {1, 1, 2};
  29. //int[] b = {1, 2, 3};
  30. //int k = 2;
  31. Scanner sc = new Scanner(System.in);
  32. String strA = sc.nextLine();
  33. String strB = sc.nextLine();
  34. int k = sc.nextInt();
  35. String[] a = strA.substring(1).trim().split(" ");
  36. String[] b = strB.substring(1).trim().split(" ");
  37. ArrayList<Integer> list = new ArrayList<Integer>(k);
  38. for (String i : a) {
  39. for (String j : b) {
  40. list.add(Integer.parseInt(i) + Integer.parseInt(j));
  41. }
  42. }
  43. Collections.sort(list, (a1, a2) -> a1.compareTo(a2));//升序排列
  44. int s = 0;
  45. for (int i = 0; i < k; i++) {
  46. s += list.get(i);
  47. }
  48. System.out.println(s);
  49. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/615447
推荐阅读
相关标签
  

闽ICP备14008679号