我想编写用于邻接矩阵的最大团算法。我正在观看一段视频,该视频解释了如何使用 Python 编写和实现算法。我目前正在尝试在视频 2 分钟后对 powerset 功能进行编码。
def powerSet(elts):
if len(elts) == 0:
return [[]]
else:
smaller = powerSet(elts[1:])
elt = [elts[0]]
withElt = []
for s in smaller:
withElt.append(s + elt)
allofthem = smaller + withElt
return allofthem
print powerSet([1, 2, 3, 4, 5])
我想用 C++ 重写它。我不确定我是否应该使用数组。到目前为止,我已经编写了以下代码,但我不知道如何在空数组中返回一个空数组(当elts
list
大小为 0 时)。
我为数组编写了一个isEmpty
函数,因为我不能len(elts)
像在 Python 中那样使用。我的方法可能不是最好的方法,所以我愿意接受任何建议。
更新:
array powerSet(int elts[])
{
if (isEmpty(elts)==1)
{
return {{}};
}
}
在我的 int main 我有:
list<int> elts;
list<int>::iterator i;
for (i=elts.begin(); i != elts.end(); ++i)
cout << *i << " ";
cout << endl;
powerSet(elts);
我不知道从这里做什么。
代码应该使用我们称之为“elts”(元素的缩写)的array
// 。然后首先,它应该添加空列表,然后是电源集的其余部分(全部显示在视频中)。list
vector
[]
例如,在这种情况下elts = [1,2,3,4]
,我的代码应该返回:
`[ [],[4],[3],[4,3],[2],[4,2],[3,2],[4,3,2],[1],[4,1],[3,1],[4,3,1],[2,1],[4,2,1],[3,2,1],[4,3,2,1] ] `
我不知道如何使用array
//来做上面的事情list
。vector