Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何降低这部分代码的复杂性?_Java_Algorithm_Time Complexity - Fatal编程技术网

Java 如何降低这部分代码的复杂性?

Java 如何降低这部分代码的复杂性?,java,algorithm,time-complexity,Java,Algorithm,Time Complexity,此代码打印数组“pts”中存在的元素组合(一次4个元素),以使特定的数字组合不会出现多次。如果1234已经打印出来,那么它的任何排列都不应该被打印出来 for (int i = 0; i < pts.length; i++) { for (int j = i+1; j < pts.length; j++) { for (int k = j+1; k < pts.length; k++) { for (int l = k+1

此代码打印数组“pts”中存在的元素组合(一次4个元素),以使特定的数字组合不会出现多次。如果1234已经打印出来,那么它的任何排列都不应该被打印出来

for (int i = 0; i < pts.length; i++) {
    for (int j = i+1; j < pts.length; j++) {
        for (int k = j+1; k < pts.length; k++) {    
            for (int l = k+1; l < pts.length; l++) {
                System.out.println(""+pts[i]+" "+pts[j]+" "+pts[k]+" "+pts[l]);
            }
        }
    }
}
for(int i=0;i

如果有人可以建议其他方法,或者告诉我如何降低代码的复杂性。我将很感激你没有什么可以改进的。输出为O(n^4)。复杂性在于问题陈述,而不是这个循环的实现。你应该研究一下为什么要用i 您可以避免在每个循环中引用pts.length。根据您在循环中所做的操作,编译器并不清楚pts长度是否不变。下面的代码只引用了1个pts.length,仍然返回所有i
for (int l = 0; l < pts.length; l++) {
    for (int k = 0; k < l; k++) {    
        for (int j = 0; j < k; j++) {
            for (int i = 0; i < j; i++) {
                System.out.println(""+i+" "+j+" "+k+" "+l);
            }
        }
    }
}
for(int l=0;l

注意,它改变了生成集的顺序,我不知道这是否重要。无论如何,这只是一个小小的改进。

不,这是你能做的最好的了。除了可读性之外,不可能有任何改进。不要添加那些糟糕的“//k”注释-它们只会使代码混乱,而不会添加信息。结果中的每件事情都会执行一个println命令。在不忽略结果的情况下,它怎么可能小于这个值呢?您实际上从未使用存储在
pts
数组中的任何值。这是有意的吗?如果这是一场比赛,你一定要提到你将如何处理比赛结果。你不应该只打印它们。如果涉及到一些计算,很可能有一个技巧,允许您根据外部循环的当前值快速跳过一些内部循环。@Marco下面是问题的完整描述。。。。由于这是一个现场比赛的问题,我不想让你给出一个完整的逻辑描述。请帮助我如何在不考虑重复组合的情况下一次选择4个点的组合。这是我解决这个问题的办法