所有对在1和n之间的总和不重复容易

时间:2017-12-22 19:47:12

标签: algorithm sum

我有这种方式来完成任务:

for(int i =1;i<=n;i++){
    for(int j=1;j<=n;j++){
        if(i+j==k//it is my variable which i know){
            out.print(i+" "+j);
    }
 }

但它会打印两次数字。我想打印一次。你能以最快的方式(即不是最简单的方法,但在操作方面)来处理这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果你知道k并知道i的范围,那么就解决方程式:

j = k-i

j_min = max(1,k-i_max)= max(1,k-n)

j_max = min(n,k-i_min)= min(n,k-1)

所以从j_min到j_max的单个for循环然后打印(k-j,j)。