
9个0,9个1,如何用c++算法把他们的所有组合算出来,不要排列,因为有重复的!很急,谢谢,可以悬赏10分。 5
1个回答
展开全部
用插空法,共有C_18^9 = 48620中可能。
#include <iostream>
#include <vector>
#include <numeric>
#include <string>
using namespace std;
const int n = 9;
void combine(int const pos = 0, int const num = n, string const str = ""){
if (pos == n){
cout << (str + string(num, '0')) << "\n";
}
else{
for (int i = 0; i <= num; ++i){
combine(pos + 1, num - i, str + string(i, '0') + '1');
}
}
}
int main(){
combine();
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询