vieri122 2010-03-23 11:11
浏览 677
已采纳

给定一个整数型的数组,和一个特定的整数值。编程求出数组中任两个元素的差等于给定整数值的值对?

给定一个整数型的数组,和一个特定的整数值。编程求出数组中任两个元素的差等于给定整数值的值对?
如题,自己初步想了下,貌似是一道关于排列组合的问题,不知道有没有更完美的解决方法?
请赐教

  • 写回答

6条回答 默认 最新

  • qwe_rt 2010-03-23 14:08
    关注

    改进的算法,免去了很多不必要的比较。提高算法的效率,保证了结果的正确性。
    [code="java"]

    import java.util.Arrays;

    public class TestClass{

    public static void printPairs(int number, int[] list) {
        if (list.length < 2)
            return;
        boolean b = false;
        Arrays.sort(list);
        //首先取最大值,看是否存在这样的值对
        if(number>(list[list.length-1]-list[0])){
            System.out.println("不存在这样的值对");
            return;
        }
        //下面从第一个元素开始判断,和后面的值做差。如果差值超过number,停止与后面更大的数值比较
        for(int i  = 0;i<list.length-2;i++)//最后一个元素不用取。
        {
            int j=i;
            while(number>=(list[j]-list[i])){
                if(number==(list[j]-list[i])){
                    b = true;
                    System.out.println(list[j]+" "+list[i]);}   
                if(++j>list.length-1)break;//和最后一个数组做差,退出。
            }
        }
        if(!b){System.out.println("不存在这样的值对");}
    }
    
    public static void main(String[] args) {
        int number = 51;
        int[] list = { 45, 60, 42, 83, 36, 10, 16, 21, 15 };
        printPairs(number, list);
    
    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog