Все двоичные строки длины n, содержащие ровно k единиц
По данным числам N и K выведите все строки из нулей и единиц длины N, содержащие ровно K единиц, в лексикографическом порядке.
Входные данные Заданы 2 числа: N и K (0 ≤ K ≤ N, 0 ≤ N ≤ 100)
Выходные данные Необходимо вывести все строки из нулей и единиц длины N, содержащие ровно K единиц, в лексикографическом порядке. Гарантируется, что размер ответа не превышает 10MiB
Примеры
входные данные
4 2
выходные данные
0011
0101
0110
1001
1010
1100
#include <iostream>
#include <vector>
using namespace std;
void gen(int i, int n, int k, vector<int>&res, int count) {
if (i > n) {
if (count == k) {
for (auto el : res) {
cout << el;
}
cout << '\n';
}
}
else {
for (int j = 0; j < 2; ++j) {
res[i - 1] = j;
if (j == 1) {
count += 1;
gen(i + 1, n, k, res, count);
count -= 1;
}
else {
gen(i + 1, n, k, res, count);
}
}
}
}
int main() {
int n, k, count = 0;
cin >> n >> k;
vector <int> res(n);
gen(1, n, k, res, count);
return 0;
}
6 тестов не проходят по времени, подскажите, пожалуйста, идеи решения задачи