全组合 考虑n个物体所有的组合

1. 数字的二进制位对应;可以转化为01数组来做。

void getNextPaiLie(vector<bool> &quanPaiLie)
{
    for (int i= quanPaiLie.size()-1;i>=0;i-- )
    {
        if (quanPaiLie[i])
        {
            quanPaiLie[i] = false;
        }
        else
        {
            quanPaiLie[i] = true;
            return;
        }
    }
}
bool isOver(vector<bool> quanPaiLie)
{
    for (size_t i=0;i<quanPaiLie.size();i++)
    {
        if (!quanPaiLie[i])
            return false;
    }
    return true;
}
// 调用方式为
vector<bool> quanPaiLie(length,false);
while (!isOver(quanPaiLie))
{
    getNextPaiLie(quanPaiLie);
}
View Code

 

posted @ 2013-06-11 11:30  10,000 hours coder  阅读(188)  评论(0编辑  收藏  举报