品味工作生活人生,实现自我人生价值,
2014年(5)
分类: C/C++
2014-04-18 19:23:10
全组合递归算法
/* 总共N个集合,每个集合有M个元素(视为不同); */
std::vector
/* 每种组合方案中待打印的各个元素的汇集Vect; */
std::vector<Uint8> _dumpNumVect;
/* tfsNumIndex:第x个集合,从0开始,最大为size-1; */
注意:针对数组以及容器的索引边界的控制,切勿越界读写发生异常;
void DumpInfo(Uint8 tfsNumIndex)
{
if(tfsNumIndex >= _tfsNumVect.size())
{
printf(" {");
for(Uint8 i=0;i<_dumpNumVect.size();i++)
{
printf(" %d ",_dumpNumVect[i]);
}
printf("\n");
}
else
{
for(Uint8 i=0;i<_tfsNumVect[tfsNumIndex].size();i++)
{
_dumpNumVect.push_back(_tfsNumVect[tfsNumIndex][i]);
DumpInfo(tfsNumIndex+1);
_dumpNumVect.pop_back();
}
}
}
int main() {
for(Uint8 i=0;i<qosConfPara.trchTotalNum;i++)
{
std::vector<Uint8> tempVect;tempVect.clear();
for(Uint8 k=0;k<qosConfPara.trchConfPara[i].tfsNum;k++){
tempVect.push_back(k);
}
_tfsNumVect.push_back(tempVect);
}
DumpInfo(0);
}