gpt4 book ai didi

java - 我们如何找到数组每个子集的总和

转载 作者:行者123 更新时间:2023-11-30 06:31:27 25 4
gpt4 key购买 nike

我试图在java中找到下面代码中每个的总和。我应该在这段代码中进行哪些更改。

import java.io.IOException;

class as {

static void printSubsets(int set[]) {
int n = set.length;
for (int i = 0; i < (1 << n); i++) {
for (int j = 0; j < n; j++) {
if ((i & (1 << j)) > 0) {
System.out.print(set[j] + " ");
}
}
System.out.println();
}
}

public static void main(String[] args) {
int set[] = { 1, 2, 3 };
printSubsets(set);
}
}

以上代码的输出是:

1 
2
1 2
3
1 3
2 3
1 2 3

我想将子集的每个元素乘以其最后一个数字,例如

1*1=1    
2*2=4
1*2+2*2=6
3*3=9

likewise all elements

最后生成所有这些子集的总和1+4+6+9+..等等。

上面的代码还按顺序打印空集和子集。如何编辑此程序以进行更改,使其不打印空集并打印随机子字符串。

最佳答案

据我了解您的问题,您希望将所有元素相互相乘,并用结果打印出迭代的每个步骤。你在这里:

static void printSubsets(int set[]) {
int sum = 0;
for (int i=0; i<set.length; i++) {
for (int j=i; j<set.length; j++) {
int var = set[i] * set[j];
sum += var;
System.out.println("( " + set[i] + " * " + set[j] + " = " + var + " ) -> sum=" + sum);
}
}
System.out.println("final sum=" + sum);
}

如果输入[1,2,3] ,总和应该根据我的算法增长:

1, 3, 6, 10, 16 up to 20

<小时/>

请注意 <<移位运算符将位模式向左移动。假设这个数字 2理解为10以二进制形式。将此数字移动 2 << 4结果是 100000二进制形式被理解为 32以十进制表示。我不确定您是否真的需要这种模式。

关于java - 我们如何找到数组每个子集的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46015228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com