首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 3-SUM代码的行为出乎意料。

Java 3-SUM代码的行为出乎意料。
EN

Stack Overflow用户
提问于 2016-10-23 14:30:23
回答 1查看 234关注 0票数 0

我试着解决了3和问题,您可以读取数组的元素数,然后从文件中读取数组本身,然后将三胞胎发送到另一个文件。

对于那些不知道三和问题的人,这里是:3和问题问给定的n个实数集合是否包含三个和为零的元素。如果是,则返回三胞胎。三胞胎必须是不同的。

这是我的密码:

代码语言:javascript
复制
   import java.util.*;
import java.io.*;

public class Main 
    { public static void main(String[] args) throws Exception            
        { int number_elements=0;
        int[] array_elements=null;
        File file = new File("date.in.txt");     
        File file2 = new File("date.out.txt");

        try  
            {Scanner input = new Scanner(file);
            number_elements=input.nextInt();
            array_elements = new int[number_elements];
            int contor=0;
            while(input.hasNext())
                { array_elements[contor]=input.nextInt();
                contor++; }}

        catch(IOException e)
            { System.out.println("eroare"); }


        Arrays.sort(array_elements);


        try 
            { PrintWriter output = new PrintWriter(file2); 
            output.print("The triplets who sum to 0: ");
            for(int i=0;i<number_elements-2;i++)
                { int j=i+1;
                int k=number_elements-1;
                while(k>=j)
                    { int temp=array_elements[i]+array_elements[j]+array_elements[k];
                    if(temp==0)
                        { output.println("( "+array_elements[i]+", "+array_elements[j]+", "+array_elements[k]+" )\n");
                        break; }
                    else if(temp>0)
                        k--;
                    else if(temp<0)
                        j++; }}
           output.close(); }

        catch(IOException e)
            { System.out.println("eroare"); }
        }}

并供投入:

8 3 1 2 -5 -2 10 7 3

我得到了

之和为0的三胞胎:( -5,-2,7) ( -2,1,1)

我不明白为什么,我是说,

( -2,1,1)

甚至不属于我的数组。如果有人能指出我的错误,我会很感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-23 16:53:25

(-2,1,1)不属于数组。但是,-2和1是这样的。所以你可以得出结论,"1“正在被重复。要解决这个问题,您应该将while循环的条件更改为k > j,而不是k >= j

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40204061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档