C++ 程序获取拼图块之间的最小差值

2025年5月10日 | 阅读 4 分钟

在本文中,我们将讨论如何用几种方法在 C++ 中获得拼图块之间的最小差异。

问题陈述

爱丽丝有一些朋友,所以他想为他的朋友们购买拼图。因此,他去了附近的一家商店。商店里有很多拼图。每个拼图都有不同数量的拼图块。之后,他想选择一些拼图送给他的朋友。在这里,鲍勃想最小化最大拼图块数和最小拼图块数之间的差异。这意味着他想购买拼图块数量几乎相同的拼图。

  • 最大拼图中的块数是 x。
  • 最小拼图中的块数是 y。
  • 之后,他想找出 x-y。
  • 商店里拼图的总数是 (m)。
  • 朋友总数 (n)。
  • 拼图在一个数组 (A) 中。

测试用例 1

拼图总数 m: 6

数组 A: [ 10, 12, 10, 7, 5, 22]

朋友数量 n: 4

输出: 5

解释: 10 和 5 之间的差是 5

测试用例 2

拼图总数 m: 5

数组 A: [ 3, 8, 12, 15, 20]

朋友数量 n: 3

输出: 7

解释: 15 和 8 之间的差是 7

方法 1

输出

C++ Program to get minimum difference between jigsaw puzzle pieces

说明

程序中存在的变量和函数是

  • "minDifference" 函数将输入向量和朋友数量作为参数。函数的返回类型是整数。在主函数中,m 表示拼图的总数,n 表示朋友的数量,数组 "A" 表示商店中每个拼图的大小。
  • 程序首先从用户获取所有必要的输入。之后,调用 "minDifference" 函数。在该函数中,对给定数组进行排序。使用 for 循环遍历数组的元素。之后,计算索引 "i" 和 "i+n-1" 处的值之间的差异。所有差异中的最小值是问题的结果。该最小值将返回给主函数。

方法 2

输出

C++ Program to get minimum difference between jigsaw puzzle pieces

说明

程序中存在的变量和函数是

  • "method2" 函数将输入向量和朋友数量作为参数。函数的返回类型是整数。在主函数中,m 表示拼图的总数,n 表示朋友的数量,数组 "A" 表示商店中每个拼图的大小。
  • 程序首先从用户获取所有必要的输入。向量和朋友数量被传递给 method2 函数。在这个函数中。数组按升序排序。之后,我们将找出应该移除多少个拼图,并将该值存储在目标变量中。现在,我们初始化两个变量,"first" 和 "last",分别为 0 和数组长度减 1。
  • 声明并初始化另一个变量 count 为 0。之后,使用 while 循环。如果 count 大于目标,则此循环将终止。现在,在 while 循环中,使用另外两个变量。"diff1" 是如果移除第一个元素时的差异,"diff2" 是如果移除最后一个元素时的差异。之后,我们检查 "diff1" 是否大于 "diff2"。我们将递减 "last" 变量;否则,我们将递增 "first" 变量。
  • 最后,最小差异将是 "last" 和 "first" 索引处的值之间的差异。它返回给主函数。在主函数中,结果被打印到控制台。