java - 一次仅使用 2 个成员的平均值查找数组的平均值

标签 java c algorithm recursion average

给你一组 8 杯水,每杯装的水量不同 所有杯子的水量必须相等,且只能使用此功能

public void equals(double[] arr, int i, int j) {
    arr[i] = arr[j] = (arr[i] + arr[j]) / 2;
}

也许递归?有什么想法吗?

最佳答案

看起来你可以在这里使用类似归并排序的逻辑......

如果你有杯子 1,2,3,4,5,6,7,8...

首先做 equals(1,2), equals(3,4), equals(5,6), equals(7,8)。此时杯子 1 和 2 的量相同,杯子 3 和 4 的量相同,依此类推。

接下来做 equals(1,3), equals(2,4), equals(5,7), equals(6,8)。现在第 1、2、3、4 杯的量相同,第 5、6、7、8 杯的量也相同。

最后做 equals (1,5), equals(2,6), equals(3,7), equals(4,8)。请注意,您还可以执行 equals(1,4)、equals(1,5) 等,因为 1,2,3,4 的数量都相同。经过这一步,所有杯子的量都一样了!

如果您需要用 Java 编写此代码的帮助,请尽管询问。

关于java - 一次仅使用 2 个成员的平均值查找数组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546094/

相关文章:

java - 用负数代替正数

java - Jersey 客户端抛出 javax.ws.rs.ProcessingException : java.net.ConnectException : failed to connect to/127. 0.0.1(端口 8080)

c# - 函数定义,C 到 .NET

c - 预处理器宏

javascript - 对字符串中的字母进行排序

algorithm - 图灵机和算法有什么区别?

java - 为循环中的第一次迭代编程不同的行为

java - 如何解析 java.net.SocketPermission

子进程无法写入共享内存(fifo - c 中的链表)

algorithm - 当我知道访问每个元素的所有概率时,我应该使用什么搜索树