1. 数字的二进制位对应;可以转化为01数组来做。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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); }