gpt4 book ai didi

algorithm - 正整数和负整数的子集和

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:33 24 4
gpt4 key购买 nike

我必须实现子集求和问题的一个变体,我的输入将是正负小数,我还需要知道子集,不幸的是知道它存在是不够的。

我已经尝试了在 wikipedia 上找到的算法, 但我不能让它们使用负数,而且我也找不到获取子集(如果存在)的方法。

谁能告诉我在哪里可以找到该算法的一些伪代码、文档或实现。

最佳答案

我用Java写代码它检查所有的可能性

import java.util.*;

public class StackOverFlow {

public static <T> Set<Set<T>> powerSet(Set<T> originalSet) {
Set<Set<T>> sets = new HashSet<Set<T>>();
if (originalSet.isEmpty()) {
sets.add(new HashSet<T>());
return sets;
}
List<T> list = new ArrayList<T>(originalSet);
T head = list.get(0);
Set<T> rest = new HashSet<T>(list.subList(1, list.size()));
for (Set<T> set : powerSet(rest)) {
Set<T> newSet = new HashSet<T>();
newSet.add(head);
newSet.addAll(set);
sets.add(newSet);
sets.add(set);
}
return sets;
}

public static int sumSet(Set<Integer> set){
int sum =0;
for (Integer s : set) {
sum += s;
}
return sum;
}

public static void main(String[] args) {
Set<Integer> mySet = new HashSet<Integer>();
mySet.add(-1);
mySet.add(2);
mySet.add(3);

int mySum = 4;
for (Set<Integer> s : powerSet(mySet)) {
if(mySum == sumSet(s))
System.out.println(s + " = " + sumSet(s));
}
}
}

希望对你有帮助

关于algorithm - 正整数和负整数的子集和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23650513/

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