Я бы хотел, чтобы переменные числа вложенных циклов повторялись во всех комбинациях. Я пробовал смотреть на другие примеры кода, но вложенные циклы запускают FAR быстрее, чем все остальное, что я видел, что делает nCr. Ранее я видел решения, которые делают нечто подобное для вложенных циклов и массива индекса, но я не думаю, что это решение будет работать, потому что я делаю комбинации, а начало и конец каждого цикла основаны на номере цикла ( первое, второе и т. д.). Что я хотел бы сделать, это изменить
#define G(i) for(vars[i-1] = (i == 1 ? 0 : vars[i-2]+1); vars[i-1] < size - (choices - i); vars[i-1]++)
int size, choices = 5;
cin >> size;
int cmb = 0;
vector<int> vars(choices);
G(1) {
G(2) {
G(3) {
G(4) {
G(5) {
combos2.insert(combos2.begin(), choices.begin(), choices.end());
cmb++;
}}}}}
что-то вроде:
for(int i = 1; i < choices; i++) {
G(i) {
combos2.insert(combos2.begin(), choices.begin(), choices.end());
cmb++;
}
// Some other macro to print correct number of braces