有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    我认为这是一个NP问题,因此最好的方法是在集合中循环并探索所有的组合。如果数据集总是3*2(这是你的例子),那么你将花费8次比较——这还不算太糟

  2. # 2 楼答案

    输入分为三组这一事实在任何方面都重要吗?从你的问题来看,我不理解这种关系

    我的第一反应是迭代3的所有组合,用三个数字之间的差值之和保存一个变量diff,用当前最佳组合保存另一个变量bestComb(最小值diff)。当你找到一个具有较低差异的组合时,你会替换diffbestComb

  3. # 3 楼答案

    您可以尝试这种逻辑方法:
    1.将映射键和值合并到一个数组或任何集合中
    2.按你喜欢的分类
    3.检查你的排序数组/集合,找出数字之间的偏差
    示例(集合):

        Map<Integer,Integer> m = new HashMap<>();
        m.put(100, 20);
        m.put(20, 99);
        m.put(35, 40);
    
        ArrayList sortedArray = new ArrayList<Integer>();
    
        m.forEach((k,v)->{
            sortedArray.add(k);
            sortedArray.add(v);
        }); 
        // sortedArray stored all numbers
        Collections.sort(sortedArray); 
    

    现在,你可以通过这个集合来找到需要的偏差

     sortedArray.forEach(cnsmr ->{
            // some code
        });
    

    你能告诉我如何确定序列中每个元素的“期望值”吗???我不明白如果没有一系列的期望值,你怎么能得到最好的值。例如模式2的7.64