Math 如何在不重复的情况下找到所有可能子集中元素乘法的总和?
我在一次竞赛中遇到过这个问题,我试图用以下代码回答它(在Java中,但您可以使用任何受支持的语言,竞赛网站链接在底部):Math 如何在不重复的情况下找到所有可能子集中元素乘法的总和?,math,sum,multiplication,Math,Sum,Multiplication,我在一次竞赛中遇到过这个问题,我试图用以下代码回答它(在Java中,但您可以使用任何受支持的语言,竞赛网站链接在底部): static long calcmultissus(int[]arr) { int sum=0,n=arr.length; 对于(int i=0;iNaive方法: 创建一个静态变量sum=0 查找数组的所有子集(在您的示例中称为powerset): 计算每套产品的数量 将其添加到sum 更好的解决方案是: 可能存在的副本 static long calcMultisSums
static long calcmultissus(int[]arr)
{
int sum=0,n=arr.length;
对于(int i=0;iNaive方法:
创建一个静态变量sum=0
查找数组的所有子集(在您的示例中称为powerset):
计算每套产品的数量
将其添加到sum
更好的解决方案是:
可能存在的副本
static long calcMultisSums(int[] arr)
{
int sum=0, n=arr.length;
for(int i=0;i<n;i++)
sum+=arr[i];
int mult=0;
for(int i=0;i<n;i++){
for(int b=i+1;b<n;b++)
mult+=arr[b]*arr[i];
}
int mult2=0;
if(n>2){
mult2=1;
for(int value : arr) {
mult2 *= value;
}
}
return mult+sum+mult2;
}