求子集的程序
#include <iostream>
#include <vector>
using namespace std;
template <class T>
T GetNum(int i, vector<T> set)
{
return set[i];
}
template <class T>
void Insert(T num, vector<T> sub)
{
sub.push_back(num);
}
template <class T>
void Delete(vector<T> sub)
{
sub.pop_back();
}
template <class T>
void PrintVector(vector<T> sub)
{
vector<T>::const_iterator p1;
for (p1 = sub.begin(); p1 != sub.end(); p1++)
cout << *p1 << " ";
}
template <class T>
void PowerSet(int i, vector<T> SrcSet, int n, vector<T> sub)
{
T num;
if (i > n-1)
{
PrintVector(sub);
return;
}
num = GetNum(i, SrcSet);
Insert(num, sub);
PowerSet(i+1, SrcSet, n, sub);
Delete(sub);
PowerSet(i+1, SrcSet, n, sub);
}
void main()
{
int a[5] = {1, 2, 3, 4, 5};
vector<int> SrcSet(a, a+5);
vector<int> sub;
PowerSet(0, SrcSet, 5, sub);
}
这个程序什么地方错了啊!大家帮忙看看,编译通过,但结果不显示
问题点数:40、回复次数:3Top
1 楼kbsoft(让世界充满爱!)回复于 2002-09-07 13:48:49 得分 0
改为
void PowerSet(int i, vector<T> SrcSet, int n, vector<T> sub)
{
T num;
if (i > n-1)
{
PrintVector(sub);
return;
}
num = GetNum(i, SrcSet);
Insert(num, sub);
PowerSet(i+1, SrcSet, n, sub);
Delete(sub);
PowerSet(i+1, SrcSet, n, sub);
Delete(sub);
}
试试Top
2 楼fminhua(水落石出)回复于 2002-09-07 19:14:05 得分 0
我发现了问题的所在,
把Delete(sub);改为sub.pop_back();
Insert(num, sub);改为sub.push_back(num);
成功!
这是为什么呢?Top
3 楼hhdsq(流氓宝宝)回复于 2002-09-07 19:23:15 得分 40
void Delete(vector<T> sub)改为Delete(vector<T> &sub)Top




